You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2022/07/19 19:24:10 UTC

[nifi-site] branch asf-staging updated: NIFI-9802 Added generated documentation for NiFi 1.16.3

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

exceptionfactory pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/nifi-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 2805ea4  NIFI-9802 Added generated documentation for NiFi 1.16.3
2805ea4 is described below

commit 2805ea44c27750c22e7bd6433b07817fd1222c13
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Tue Jul 19 14:23:11 2022 -0500

    NIFI-9802 Added generated documentation for NiFi 1.16.3
---
 .../additionalDetails.html                         |    57 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    75 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    97 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   260 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    55 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   114 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    37 +
 .../index.html                                     |    14 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    70 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    57 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    44 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    63 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    41 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    53 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    53 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    43 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    57 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    66 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    44 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    89 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    76 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    48 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    58 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    57 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     2 +
 .../index.html                                     |     2 +
 .../additionalDetails.html                         |    91 +
 .../index.html                                     |     1 +
 .../index.html                                     |     4 +
 .../index.html                                     |     4 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     4 +
 .../index.html                                     |     4 +
 .../additionalDetails.html                         |   144 +
 .../index.html                                     |     4 +
 .../index.html                                     |     4 +
 .../additionalDetails.html                         |    55 +
 .../index.html                                     |     1 +
 .../SQL.gif                                        |   Bin 0 -> 30954 bytes
 .../SQL2.gif                                       |   Bin 0 -> 28716 bytes
 .../additionalDetails.html                         |   219 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    46 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../additionalDetails.html                         |   196 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../additionalDetails.html                         |   101 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../additionalDetails.html                         |    45 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    89 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    48 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    39 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../org.apache.nifi.hbase.FetchHBaseRow/index.html |     1 +
 .../org.apache.nifi.hbase.GetHBase/index.html      |     1 +
 .../additionalDetails.html                         |    41 +
 .../org.apache.nifi.hbase.PutHBaseCell/index.html  |     1 +
 .../additionalDetails.html                         |    41 +
 .../org.apache.nifi.hbase.PutHBaseJSON/index.html  |     1 +
 .../additionalDetails.html                         |   113 +
 .../index.html                                     |     1 +
 .../org.apache.nifi.hbase.ScanHBase/index.html     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../org.apache.nifi.GetHTMLElement/index.html      |     1 +
 .../org.apache.nifi.ModifyHTMLElement/index.html   |     1 +
 .../org.apache.nifi.PutHTMLElement/index.html      |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   170 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    95 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    78 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    81 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   143 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   143 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   144 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   156 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   260 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   260 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   193 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   205 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   260 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   260 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   193 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   205 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   185 +
 .../index.html                                     |     5 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    65 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   179 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    41 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    59 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    59 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    77 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    44 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    32 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    43 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    58 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     4 +
 .../additionalDetails.html                         |    32 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    72 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     3 +
 .../index.html                                     |     3 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    97 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../org.apache.nifi.avro.AvroReader/index.html     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   199 +
 .../org.apache.nifi.cef.CEFReader/index.html       |     1 +
 .../additionalDetails.html                         |   427 +
 .../org.apache.nifi.csv.CSVReader/index.html       |     3 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   496 +
 .../org.apache.nifi.grok.GrokReader/index.html     |     1 +
 .../additionalDetails.html                         |   336 +
 .../org.apache.nifi.json.JsonPathReader/index.html |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   411 +
 .../org.apache.nifi.json.JsonTreeReader/index.html |     1 +
 .../org.apache.nifi.lookup.ReaderLookup/index.html |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    91 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    70 +
 .../org.apache.nifi.syslog.SyslogReader/index.html |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    93 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   962 +
 .../org.apache.nifi.xml.XMLReader/index.html       |     1 +
 .../additionalDetails.html                         |   211 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   231 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   174 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   502 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   265 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    67 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   178 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    82 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   135 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   107 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    53 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    66 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    54 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    45 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    42 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    56 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    48 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   114 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    75 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    77 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    94 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    70 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    47 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    48 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    30 +
 .../index.html                                     |     2 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    40 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   149 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   239 +
 .../index.html                                     |     2 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    84 +
 .../fork-join-enrichment.png                       |   Bin 0 -> 600998 bytes
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   481 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    69 +
 .../index.html                                     |     6 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     2 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    56 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    44 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    81 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   524 +
 .../fork-join-enrichment.png                       |   Bin 0 -> 600998 bytes
 .../index.html                                     |     4 +
 .../additionalDetails.html                         |    40 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../ListFTP-batch-high-level-flow.png              |   Bin 0 -> 480307 bytes
 .../ListFTP-batch-processing.png                   |   Bin 0 -> 467655 bytes
 .../additionalDetails.html                         |   150 +
 .../index.html                                     |     1 +
 .../ListFile-batch-high-level-flow.png             |   Bin 0 -> 469420 bytes
 .../ListFile-batch-processing.png                  |   Bin 0 -> 468988 bytes
 .../additionalDetails.html                         |   150 +
 .../index.html                                     |     1 +
 .../ListSFTP-batch-high-level-flow.png             |   Bin 0 -> 467641 bytes
 .../ListSFTP-batch-processing.png                  |   Bin 0 -> 479184 bytes
 .../additionalDetails.html                         |   150 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    82 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   215 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   171 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   229 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     2 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   190 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   555 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    46 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    67 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     2 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   180 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   390 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   109 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   190 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   104 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   373 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    41 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   358 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |   396 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    47 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../index.html                                     |     1 +
 .../additionalDetails.html                         |    74 +
 .../index.html                                     |     1 +
 docs/nifi-docs/css/component-usage.css             |   183 +
 docs/nifi-docs/css/main.css                        |   217 +
 docs/nifi-docs/html/administration-guide.html      |  9770 +++
 docs/nifi-docs/html/developer-guide.html           |  3871 +
 docs/nifi-docs/html/expression-language-guide.html |  4722 ++
 docs/nifi-docs/html/getting-started.html           |  1670 +
 docs/nifi-docs/html/images/CopyOnWrite.png         |   Bin 0 -> 173743 bytes
 docs/nifi-docs/html/images/DataIngress.png         |   Bin 0 -> 62849 bytes
 docs/nifi-docs/html/images/Funnels.png             |   Bin 0 -> 202859 bytes
 docs/nifi-docs/html/images/PG1_imported_diff.png   |   Bin 0 -> 143940 bytes
 docs/nifi-docs/html/images/PG1_imported_same.png   |   Bin 0 -> 170541 bytes
 docs/nifi-docs/html/images/PG1_process_group.png   |   Bin 0 -> 176792 bytes
 docs/nifi-docs/html/images/PG1_variable_ref_1.png  |   Bin 0 -> 59812 bytes
 docs/nifi-docs/html/images/PG1_variable_ref_2.png  |   Bin 0 -> 61554 bytes
 docs/nifi-docs/html/images/PG1_variable_ref_PG.png |   Bin 0 -> 59326 bytes
 docs/nifi-docs/html/images/PG1_versioned_flow.png  |   Bin 0 -> 144635 bytes
 docs/nifi-docs/html/images/PassByReference.png     |   Bin 0 -> 318283 bytes
 docs/nifi-docs/html/images/UpdatingAttributes.png  |   Bin 0 -> 187636 bytes
 docs/nifi-docs/html/images/WebCrawler.png          |   Bin 0 -> 243031 bytes
 .../html/images/abc-restricted-component-flow.png  |   Bin 0 -> 179692 bytes
 docs/nifi-docs/html/images/abc-versioned-flow.png  |   Bin 0 -> 179788 bytes
 .../html/images/access-policy-config-start.png     |   Bin 0 -> 104835 bytes
 .../html/images/add-controller-service-window.png  |   Bin 0 -> 187532 bytes
 docs/nifi-docs/html/images/add-input-port-S2S.png  |   Bin 0 -> 109037 bytes
 docs/nifi-docs/html/images/add-output-port-S2S.png |   Bin 0 -> 109298 bytes
 ...parameter-during-parameter-context-creation.png |   Bin 0 -> 72860 bytes
 .../html/images/add-process-group-import.png       |   Bin 0 -> 21182 bytes
 .../html/images/add-processor-version-example.png  |   Bin 0 -> 106925 bytes
 .../images/add-processor-version-sort-filter.png   |   Bin 0 -> 101860 bytes
 .../html/images/add-processor-with-tag-cloud.png   |   Bin 0 -> 191726 bytes
 docs/nifi-docs/html/images/add-processor.png       |   Bin 0 -> 207847 bytes
 docs/nifi-docs/html/images/add-registry-client.png |   Bin 0 -> 24284 bytes
 .../html/images/add-reporting-task-window.png      |   Bin 0 -> 170339 bytes
 docs/nifi-docs/html/images/addConnect.png          |   Bin 0 -> 800 bytes
 .../html/images/align-horizontally-after.png       |   Bin 0 -> 75699 bytes
 .../html/images/align-horizontally-before.png      |   Bin 0 -> 144869 bytes
 .../html/images/align-vertically-after.png         |   Bin 0 -> 141979 bytes
 .../html/images/align-vertically-before.png        |   Bin 0 -> 185600 bytes
 docs/nifi-docs/html/images/allow-weak-crypto.png   |   Bin 0 -> 65019 bytes
 docs/nifi-docs/html/images/argon2-salt.png         |   Bin 0 -> 468557 bytes
 .../authorizers-xml-initial-node-identities.png    |   Bin 0 -> 229506 bytes
 .../authorizers-xml-initial-user-identities.png    |   Bin 0 -> 184724 bytes
 .../html/images/autocomplete-parameter-example.png |   Bin 0 -> 123963 bytes
 docs/nifi-docs/html/images/back_pressure_full.png  |   Bin 0 -> 12187 bytes
 .../html/images/back_pressure_indicator_hover.png  |   Bin 0 -> 26093 bytes
 .../html/images/back_pressure_indicators.png       |   Bin 0 -> 27643 bytes
 .../back_pressure_prediction_model_example.png     |   Bin 0 -> 20354 bytes
 docs/nifi-docs/html/images/bcrypt-salt.png         |   Bin 0 -> 159570 bytes
 .../html/images/browser-present-client-cert.png    |   Bin 0 -> 653581 bytes
 .../html/images/browser-warning-insecure-site.png  |   Bin 0 -> 539107 bytes
 docs/nifi-docs/html/images/buttonDisable.png       |   Bin 0 -> 755 bytes
 docs/nifi-docs/html/images/buttonEnable.png        |   Bin 0 -> 627 bytes
 docs/nifi-docs/html/images/buttonStart.png         |   Bin 0 -> 516 bytes
 docs/nifi-docs/html/images/buttonStop.png          |   Bin 0 -> 354 bytes
 .../html/images/change-version-dialog.png          |   Bin 0 -> 57722 bytes
 docs/nifi-docs/html/images/change-version.png      |   Bin 0 -> 191552 bytes
 .../html/images/cluster_connection_summary.png     |   Bin 0 -> 106868 bytes
 docs/nifi-docs/html/images/comments-tab.png        |   Bin 0 -> 26526 bytes
 .../html/images/component-linking-processor.png    |   Bin 0 -> 203625 bytes
 .../html/images/component-version-dialog.png       |   Bin 0 -> 38579 bytes
 docs/nifi-docs/html/images/components.png          |   Bin 0 -> 3624 bytes
 .../configure-controller-service-properties.png    |   Bin 0 -> 79361 bytes
 .../configure-controller-service-settings.png      |   Bin 0 -> 76193 bytes
 .../html/images/configure-parameter-on-the-fly.png |   Bin 0 -> 112424 bytes
 ...onfigure-processor-with-version-information.png |   Bin 0 -> 59869 bytes
 .../html/images/configure-remote-process-group.png |   Bin 0 -> 35467 bytes
 .../images/configure-reporting-task-properties.png |   Bin 0 -> 97484 bytes
 .../images/configure-reporting-task-settings.png   |   Bin 0 -> 70202 bytes
 docs/nifi-docs/html/images/connection-settings.png |   Bin 0 -> 73259 bytes
 .../html/images/context-menu-parameters-option.png |   Bin 0 -> 146871 bytes
 .../controller-services-configure-buttons.png      |   Bin 0 -> 17828 bytes
 .../images/controller-services-info-buttons.png    |   Bin 0 -> 10024 bytes
 .../html/images/controller-services-tab.png        |   Bin 0 -> 113179 bytes
 .../html/images/controller-settings-selection.png  |   Bin 0 -> 142806 bytes
 .../html/images/convert-property-to-parameter.png  |   Bin 0 -> 134652 bytes
 docs/nifi-docs/html/images/create-connection.png   |   Bin 0 -> 30851 bytes
 .../html/images/create-service-ssl-context.png     |   Bin 0 -> 122359 bytes
 docs/nifi-docs/html/images/disconnect-dialog.png   |   Bin 0 -> 13168 bytes
 .../html/images/disconnected-node-cluster-mgt.png  |   Bin 0 -> 92532 bytes
 .../html/images/edit-parameter-context.png         |   Bin 0 -> 68513 bytes
 .../html/images/edit-property-dropdown.png         |   Bin 0 -> 46811 bytes
 .../html/images/edit-property-textarea.png         |   Bin 0 -> 39620 bytes
 .../html/images/el-param-support-help-text.png     |   Bin 0 -> 143979 bytes
 .../nifi-docs/html/images/el-support-help-text.png |   Bin 0 -> 204879 bytes
 .../images/enable-controller-service-scope.png     |   Bin 0 -> 48063 bytes
 docs/nifi-docs/html/images/event-attributes.png    |   Bin 0 -> 32912 bytes
 docs/nifi-docs/html/images/event-content.png       |   Bin 0 -> 32080 bytes
 docs/nifi-docs/html/images/event-details.png       |   Bin 0 -> 36635 bytes
 .../html/images/existing-parameter-selected.png    |   Bin 0 -> 127719 bytes
 .../html/images/existing-parameters-example.png    |   Bin 0 -> 85104 bytes
 docs/nifi-docs/html/images/expand-event.png        |   Bin 0 -> 9302 bytes
 docs/nifi-docs/html/images/expanded-events.png     |   Bin 0 -> 187395 bytes
 .../html/images/file_expiration_clock.png          |   Bin 0 -> 19910 bytes
 docs/nifi-docs/html/images/find-parents.png        |   Bin 0 -> 9148 bytes
 .../nifi-docs/html/images/flow-version-changed.png |   Bin 0 -> 150555 bytes
 docs/nifi-docs/html/images/getfile-permissions.png |   Bin 0 -> 266410 bytes
 docs/nifi-docs/html/images/global-menu.png         |   Bin 0 -> 32770 bytes
 .../html/images/group-creation-dialog.png          |   Bin 0 -> 15997 bytes
 docs/nifi-docs/html/images/iconAccessPolicies.png  |   Bin 0 -> 780 bytes
 docs/nifi-docs/html/images/iconAddUser.png         |   Bin 0 -> 815 bytes
 docs/nifi-docs/html/images/iconAlert.png           |   Bin 0 -> 553 bytes
 docs/nifi-docs/html/images/iconConfigure.png       |   Bin 0 -> 944 bytes
 docs/nifi-docs/html/images/iconConnect.png         |   Bin 0 -> 595 bytes
 docs/nifi-docs/html/images/iconConnection.png      |   Bin 0 -> 1160 bytes
 .../html/images/iconConvertToParameter.png         |   Bin 0 -> 548 bytes
 docs/nifi-docs/html/images/iconDelete.png          |   Bin 0 -> 574 bytes
 docs/nifi-docs/html/images/iconDetails.png         |   Bin 0 -> 704 bytes
 docs/nifi-docs/html/images/iconDisable.png         |   Bin 0 -> 533 bytes
 docs/nifi-docs/html/images/iconDisconnect.png      |   Bin 0 -> 618 bytes
 .../nifi-docs/html/images/iconDownloadTemplate.png |   Bin 0 -> 929 bytes
 docs/nifi-docs/html/images/iconEdit.png            |   Bin 0 -> 652 bytes
 docs/nifi-docs/html/images/iconEnable.png          |   Bin 0 -> 359 bytes
 docs/nifi-docs/html/images/iconFunnel.png          |   Bin 0 -> 1052 bytes
 docs/nifi-docs/html/images/iconGoTo.png            |   Bin 0 -> 385 bytes
 docs/nifi-docs/html/images/iconInfo.png            |   Bin 0 -> 562 bytes
 docs/nifi-docs/html/images/iconInputPort.png       |   Bin 0 -> 623 bytes
 docs/nifi-docs/html/images/iconLabel.png           |   Bin 0 -> 788 bytes
 docs/nifi-docs/html/images/iconLineage.png         |   Bin 0 -> 472 bytes
 docs/nifi-docs/html/images/iconLoadBalance.png     |   Bin 0 -> 792 bytes
 docs/nifi-docs/html/images/iconLocallyModified.png |   Bin 0 -> 1247 bytes
 .../html/images/iconLocallyModifiedStale.png       |   Bin 0 -> 1296 bytes
 docs/nifi-docs/html/images/iconNewTemplate.png     |   Bin 0 -> 1075 bytes
 docs/nifi-docs/html/images/iconNotSecure.png       |   Bin 0 -> 406 bytes
 docs/nifi-docs/html/images/iconOffload.png         |   Bin 0 -> 589 bytes
 docs/nifi-docs/html/images/iconOutputPort.png      |   Bin 0 -> 811 bytes
 docs/nifi-docs/html/images/iconProcessGroup.png    |   Bin 0 -> 883 bytes
 docs/nifi-docs/html/images/iconProcessor.png       |   Bin 0 -> 1596 bytes
 .../html/images/iconRemoteProcessGroup.png         |   Bin 0 -> 848 bytes
 docs/nifi-docs/html/images/iconResize.png          |   Bin 0 -> 136 bytes
 docs/nifi-docs/html/images/iconRun.png             |   Bin 0 -> 336 bytes
 docs/nifi-docs/html/images/iconSecure.png          |   Bin 0 -> 386 bytes
 docs/nifi-docs/html/images/iconStale.png           |   Bin 0 -> 1439 bytes
 docs/nifi-docs/html/images/iconStart.png           |   Bin 0 -> 483 bytes
 docs/nifi-docs/html/images/iconStop.png            |   Bin 0 -> 206 bytes
 docs/nifi-docs/html/images/iconSyncFailure.png     |   Bin 0 -> 973 bytes
 docs/nifi-docs/html/images/iconTemplate.png        |   Bin 0 -> 1376 bytes
 docs/nifi-docs/html/images/iconTerminate.png       |   Bin 0 -> 4957 bytes
 .../html/images/iconTransmissionActive.png         |   Bin 0 -> 760 bytes
 .../html/images/iconTransmissionInactive.png       |   Bin 0 -> 837 bytes
 docs/nifi-docs/html/images/iconUpToDate.png        |   Bin 0 -> 996 bytes
 docs/nifi-docs/html/images/iconUploadTemplate.png  |   Bin 0 -> 918 bytes
 docs/nifi-docs/html/images/iconUserPolicies.png    |   Bin 0 -> 633 bytes
 .../html/images/import-version-dialog.png          |   Bin 0 -> 62746 bytes
 .../html/images/import-xyz-flow-fails.png          |   Bin 0 -> 111431 bytes
 .../individual-parameter-context-polices.png       |   Bin 0 -> 67042 bytes
 .../html/images/install-download-link.png          |   Bin 0 -> 63965 bytes
 .../images/instantiate-template-description.png    |   Bin 0 -> 19348 bytes
 .../nifi-docs/html/images/instantiate-template.png |   Bin 0 -> 6897 bytes
 docs/nifi-docs/html/images/invalid-processor.png   |   Bin 0 -> 24908 bytes
 .../images/keychain-access-certificate-listing.png |   Bin 0 -> 604391 bytes
 .../images/keychain-access-trust-certificate.png   |   Bin 0 -> 395479 bytes
 .../html/images/keytabCredentialsService-pg.png    |   Bin 0 -> 91943 bytes
 .../html/images/keytabCredentialsService-rpg.png   |   Bin 0 -> 92517 bytes
 .../keytabcredentialsservice-permissions.png       |   Bin 0 -> 257318 bytes
 docs/nifi-docs/html/images/lineage-flowfile.png    |   Bin 0 -> 809 bytes
 .../html/images/lineage-graph-annotated.png        |   Bin 0 -> 40282 bytes
 .../html/images/load_balance_active_connection.png |   Bin 0 -> 35045 bytes
 .../images/load_balance_compression_options.png    |   Bin 0 -> 83986 bytes
 .../images/load_balance_configured_connection.png  |   Bin 0 -> 30628 bytes
 .../images/load_balance_distributed_connection.png |   Bin 0 -> 12577 bytes
 .../html/images/local-changes-pg-inside.png        |   Bin 0 -> 270408 bytes
 .../html/images/local-changes-pg-selected.png      |   Bin 0 -> 198329 bytes
 docs/nifi-docs/html/images/login.png               |   Bin 0 -> 11684 bytes
 docs/nifi-docs/html/images/ncm.png                 |   Bin 0 -> 89813 bytes
 .../html/images/new-parameter-referenced.png       |   Bin 0 -> 128579 bytes
 docs/nifi-docs/html/images/new_variable-apply.png  |   Bin 0 -> 69277 bytes
 .../html/images/nifi-app-log-ui-available.png      |   Bin 0 -> 270149 bytes
 .../images/nifi-application-running-browser.png    |   Bin 0 -> 678902 bytes
 ...ifi-cluster-tls-toolkit-certificate-diagram.png |   Bin 0 -> 117853 bytes
 .../html/images/nifi-connection-bend-points.png    |   Bin 0 -> 105840 bytes
 .../nifi-docs/html/images/nifi-connection-menu.png |   Bin 0 -> 26595 bytes
 docs/nifi-docs/html/images/nifi-connection.png     |   Bin 0 -> 88506 bytes
 .../html/images/nifi-flow-authenticated.png        |   Bin 0 -> 145051 bytes
 .../html/images/nifi-home-dir-listing.png          |   Bin 0 -> 458278 bytes
 docs/nifi-docs/html/images/nifi-legacy-salt.png    |   Bin 0 -> 110571 bytes
 docs/nifi-docs/html/images/nifi-login.png          |   Bin 0 -> 61992 bytes
 docs/nifi-docs/html/images/nifi-navigation.png     |   Bin 0 -> 173101 bytes
 docs/nifi-docs/html/images/nifi-notifications.png  |   Bin 0 -> 106018 bytes
 .../html/images/nifi-process-group-menu.png        |   Bin 0 -> 74309 bytes
 docs/nifi-docs/html/images/nifi-processor-menu.png |   Bin 0 -> 63227 bytes
 docs/nifi-docs/html/images/nifi-rpg-menu.png       |   Bin 0 -> 91924 bytes
 .../images/nifi-running-tls-client-certificate.png |   Bin 0 -> 712346 bytes
 .../images/nifi-secure-cluster-no-permissions.png  |   Bin 0 -> 776616 bytes
 .../images/nifi-secure-cluster-permissions.png     |   Bin 0 -> 763213 bytes
 .../html/images/nifi-secure-cluster-status.png     |   Bin 0 -> 692718 bytes
 ...tls-standalone-external-certificate-diagram.png |   Bin 0 -> 110528 bytes
 .../nifi-tls-toolkit-standalone-cert-diagram.png   |   Bin 0 -> 107494 bytes
 .../html/images/nifi-toolbar-components.png        |   Bin 0 -> 122427 bytes
 .../html/images/nifi-toolkit-home-dir-listing.png  |   Bin 0 -> 239110 bytes
 .../images/nifi-trusted-server-certificate.png     |   Bin 0 -> 852121 bytes
 docs/nifi-docs/html/images/nifi-users-dialog.png   |   Bin 0 -> 36313 bytes
 docs/nifi-docs/html/images/nifi_pc1_parameters.png |   Bin 0 -> 79044 bytes
 .../html/images/nifi_pc1_parameters_new.png        |   Bin 0 -> 85571 bytes
 .../html/images/offloaded-node-cluster-mgt.png     |   Bin 0 -> 91953 bytes
 .../html/images/offloading-node-cluster-mgt.png    |   Bin 0 -> 91042 bytes
 docs/nifi-docs/html/images/openssl-salt.png        |   Bin 0 -> 119807 bytes
 .../html/images/override_policy_copy_empty.png     |   Bin 0 -> 60314 bytes
 .../html/images/parameter-contexts-selection.png   |   Bin 0 -> 154709 bytes
 .../html/images/parameter-contexts-settings.png    |   Bin 0 -> 67836 bytes
 .../parameters-validate-affected-components.png    |   Bin 0 -> 141063 bytes
 docs/nifi-docs/html/images/parent-found.png        |   Bin 0 -> 12890 bytes
 docs/nifi-docs/html/images/pbkdf2-salt.png         |   Bin 0 -> 143367 bytes
 docs/nifi-docs/html/images/pc1_parameters.png      |   Bin 0 -> 85249 bytes
 .../html/images/primary-node-cluster-mgt.png       |   Bin 0 -> 96308 bytes
 .../html/images/primary-node-processor.png         |   Bin 0 -> 235057 bytes
 .../images/primary-node-processors-summary.png     |   Bin 0 -> 319666 bytes
 .../html/images/process-group-anatomy.png          |   Bin 0 -> 72758 bytes
 .../images/process-group-configuration-options.png |   Bin 0 -> 177225 bytes
 .../process-group-configuration-parameters.png     |   Bin 0 -> 145217 bytes
 .../images/process-group-configuration-window.png  |   Bin 0 -> 118585 bytes
 .../process-group-controller-services-scope.png    |   Bin 0 -> 200791 bytes
 .../process-group-modify-policy-add-user2.png      |   Bin 0 -> 41612 bytes
 .../html/images/process-group-modify-policy.png    |   Bin 0 -> 62122 bytes
 .../process-group-parameter-context-menu.png       |   Bin 0 -> 79032 bytes
 .../process-group-version-control-stopped.png      |   Bin 0 -> 140886 bytes
 .../images/process-group-view-policy-add-user2.png |   Bin 0 -> 41444 bytes
 .../html/images/process-group-view-policy.png      |   Bin 0 -> 62576 bytes
 docs/nifi-docs/html/images/processor-anatomy.png   |   Bin 0 -> 59072 bytes
 .../html/images/processor-change-version.png       |   Bin 0 -> 82455 bytes
 .../html/images/processor-connection-bubble.png    |   Bin 0 -> 27301 bytes
 .../html/images/processor-cs-version-match.png     |   Bin 0 -> 40647 bytes
 .../processor-cs-version-mismatch-config.png       |   Bin 0 -> 43638 bytes
 .../processor-cs-version-mismatch-warnings.png     |   Bin 0 -> 89339 bytes
 .../images/processor-inherited-modify-policy.png   |   Bin 0 -> 50459 bytes
 .../html/images/processor-modify-policy.png        |   Bin 0 -> 73421 bytes
 .../images/processor-replacement-modify-policy.png |   Bin 0 -> 43220 bytes
 .../images/processor-replacement-view-policy.png   |   Bin 0 -> 42975 bytes
 .../processor-version-information-example.png      |   Bin 0 -> 31717 bytes
 .../html/images/processor-view-policy.png          |   Bin 0 -> 73720 bytes
 docs/nifi-docs/html/images/properties-tab.png      |   Bin 0 -> 33388 bytes
 .../nifi-docs/html/images/provenance-annotated.png |   Bin 0 -> 111369 bytes
 docs/nifi-docs/html/images/provenance-table.png    |   Bin 0 -> 286522 bytes
 .../html/images/puthdfs-no-kerberosCS.png          |   Bin 0 -> 159180 bytes
 docs/nifi-docs/html/images/puthdfs-permissions.png |   Bin 0 -> 238283 bytes
 docs/nifi-docs/html/images/puthdfs-properties.png  |   Bin 0 -> 164244 bytes
 .../nifi-docs/html/images/puthdfs-properties_2.png |   Bin 0 -> 162869 bytes
 .../reference-parameter-available-parameters.png   |   Bin 0 -> 60376 bytes
 .../html/images/reference-parameter-option.png     |   Bin 0 -> 54408 bytes
 .../html/images/registry-client-added.png          |   Bin 0 -> 72844 bytes
 .../nifi-docs/html/images/registry-clients-tab.png |   Bin 0 -> 71646 bytes
 docs/nifi-docs/html/images/relationships-tab.png   |   Bin 0 -> 43445 bytes
 .../nifi-docs/html/images/remote-group-anatomy.png |   Bin 0 -> 51949 bytes
 .../html/images/remote-group-ports-dialog.png      |   Bin 0 -> 95111 bytes
 .../html/images/remote-port-connection-status.png  |   Bin 0 -> 106748 bytes
 .../html/images/replacetext-processor-added.png    |   Bin 0 -> 131342 bytes
 .../html/images/reporting-tasks-edit-buttons.png   |   Bin 0 -> 18756 bytes
 .../html/images/reporting-tasks-info-buttons.png   |   Bin 0 -> 13352 bytes
 docs/nifi-docs/html/images/reporting-tasks-tab.png |   Bin 0 -> 90093 bytes
 docs/nifi-docs/html/images/restricted.png          |   Bin 0 -> 603 bytes
 docs/nifi-docs/html/images/revert-failure.png      |   Bin 0 -> 144751 bytes
 .../html/images/revert-local-changes-dialog.png    |   Bin 0 -> 71465 bytes
 docs/nifi-docs/html/images/revert-success.png      |   Bin 0 -> 135376 bytes
 docs/nifi-docs/html/images/rpg-variable.png        |   Bin 0 -> 60025 bytes
 docs/nifi-docs/html/images/s2s-rproxy-http.svg     |    18 +
 .../html/images/s2s-rproxy-portnumber.svg          |    18 +
 .../html/images/s2s-rproxy-servername.svg          |    18 +
 .../html/images/save-flow-version-commit.png       |   Bin 0 -> 70067 bytes
 .../html/images/save-flow-version-dialog.png       |   Bin 0 -> 48948 bytes
 docs/nifi-docs/html/images/scheduling-tab.png      |   Bin 0 -> 43830 bytes
 docs/nifi-docs/html/images/scrypt-salt.png         |   Bin 0 -> 160684 bytes
 docs/nifi-docs/html/images/search-events.png       |   Bin 0 -> 43620 bytes
 .../html/images/search-receive-event-abc.png       |   Bin 0 -> 44965 bytes
 .../nifi-docs/html/images/settings-general-tab.png |   Bin 0 -> 28994 bytes
 docs/nifi-docs/html/images/settings-tab.png        |   Bin 0 -> 50039 bytes
 .../html/images/show-local-changes-dialog.png      |   Bin 0 -> 67272 bytes
 docs/nifi-docs/html/images/simple-flow.png         |   Bin 0 -> 63663 bytes
 .../html/images/start-version-control.png          |   Bin 0 -> 187732 bytes
 docs/nifi-docs/html/images/stats-history.png       |   Bin 0 -> 54293 bytes
 .../html/images/stop-version-control-dialog.png    |   Bin 0 -> 17176 bytes
 .../nifi-docs/html/images/stop-version-control.png |   Bin 0 -> 191915 bytes
 docs/nifi-docs/html/images/summary-annotated.png   |   Bin 0 -> 102732 bytes
 docs/nifi-docs/html/images/summary-table.png       |   Bin 0 -> 87390 bytes
 docs/nifi-docs/html/images/summary_connections.png |   Bin 0 -> 113698 bytes
 ...ys_admin-restricted-component-access-policy.png |   Bin 0 -> 64926 bytes
 docs/nifi-docs/html/images/terminated-thread.png   |   Bin 0 -> 6489 bytes
 .../html/images/test_user-import-abc-flow.png      |   Bin 0 -> 105856 bytes
 .../html/images/test_user-import-success.png       |   Bin 0 -> 147491 bytes
 .../html/images/test_user-import-xyz-flow.png      |   Bin 0 -> 105959 bytes
 ...t_user-restricted-component-read-filesystem.png |   Bin 0 -> 79875 bytes
 ..._user-restricted-component-write-filesystem.png |   Bin 0 -> 77687 bytes
 .../images/test_user-revert-local-changes-2.png    |   Bin 0 -> 109502 bytes
 .../html/images/test_user-revert-local-changes.png |   Bin 0 -> 109825 bytes
 .../html/images/update-parameter-context.png       |   Bin 0 -> 147201 bytes
 .../nifi-docs/html/images/user-creation-dialog.png |   Bin 0 -> 12866 bytes
 .../nifi-docs/html/images/user-policies-detail.png |   Bin 0 -> 107077 bytes
 docs/nifi-docs/html/images/user-policies.png       |   Bin 0 -> 40015 bytes
 .../html/images/user1-create-connection.png        |   Bin 0 -> 114375 bytes
 .../html/images/user1-edit-connection.png          |   Bin 0 -> 135073 bytes
 docs/nifi-docs/html/images/user1-full-access.png   |   Bin 0 -> 137698 bytes
 docs/nifi-docs/html/images/user2-can-connect.png   |   Bin 0 -> 123437 bytes
 .../html/images/user2-connected-processors.png     |   Bin 0 -> 126709 bytes
 .../html/images/user2-edit-connection.png          |   Bin 0 -> 136740 bytes
 .../nifi-docs/html/images/user2-edit-processor.png |   Bin 0 -> 137442 bytes
 .../html/images/user2-moved-processor.png          |   Bin 0 -> 131055 bytes
 docs/nifi-docs/html/images/user2-no-connection.png |   Bin 0 -> 119358 bytes
 .../html/images/user2-no-edit-connection.png       |   Bin 0 -> 145520 bytes
 .../html/images/user2-restricted-access.png        |   Bin 0 -> 136429 bytes
 docs/nifi-docs/html/images/valid-processor.png     |   Bin 0 -> 24664 bytes
 docs/nifi-docs/html/images/variable-name.png       |   Bin 0 -> 49827 bytes
 docs/nifi-docs/html/images/variable-overridden.png |   Bin 0 -> 60928 bytes
 .../html/images/variable-putfile-property.png      |   Bin 0 -> 52102 bytes
 .../variable-unauthorized-ref-processor-canvas.png |   Bin 0 -> 246129 bytes
 docs/nifi-docs/html/images/variable-value.png      |   Bin 0 -> 56107 bytes
 .../images/variable_insufficient-permissions.png   |   Bin 0 -> 161730 bytes
 .../images/variable_nav-controller_services.png    |   Bin 0 -> 81906 bytes
 .../nifi-docs/html/images/variable_window-goto.png |   Bin 0 -> 77419 bytes
 docs/nifi-docs/html/images/variable_window-rpg.png |   Bin 0 -> 56898 bytes
 .../html/images/variables-context_menu-pg.png      |   Bin 0 -> 227053 bytes
 .../html/images/variables-context_menu-rpg.png     |   Bin 0 -> 216948 bytes
 .../variables-window_controller-services.png       |   Bin 0 -> 64086 bytes
 .../html/images/variables-window_unauthorized.png  |   Bin 0 -> 61600 bytes
 .../html/images/variables_window_empty.png         |   Bin 0 -> 42741 bytes
 .../images/verify-release-gpg-and-checksums.png    |   Bin 0 -> 547141 bytes
 .../html/images/version-state-summary-page.png     |   Bin 0 -> 162722 bytes
 .../html/images/version-states-display.png         |   Bin 0 -> 184878 bytes
 .../html/images/versioned-flow-imported.png        |   Bin 0 -> 145972 bytes
 .../html/images/versioned-process-group.png        |   Bin 0 -> 142275 bytes
 docs/nifi-docs/html/images/xyz-flow.png            |   Bin 0 -> 180851 bytes
 docs/nifi-docs/html/images/xyz-process-group.png   |   Bin 0 -> 147684 bytes
 .../images/zero-leader-cluster-http-access.png     |   Bin 0 -> 77567 bytes
 docs/nifi-docs/html/images/zero-leader-cluster.png |   Bin 0 -> 67158 bytes
 docs/nifi-docs/html/images/zero-leader-node.png    |   Bin 0 -> 44667 bytes
 docs/nifi-docs/html/nifi-in-depth.html             |   887 +
 docs/nifi-docs/html/overview.html                  |   908 +
 docs/nifi-docs/html/record-path-guide.html         |  2348 +
 docs/nifi-docs/html/toolkit-guide.html             |  3349 +
 docs/nifi-docs/html/user-guide.html                |  6097 ++
 docs/nifi-docs/html/walkthroughs.html              |  3093 +
 docs/nifi-docs/images/bgBannerFoot.png             |   Bin 0 -> 189 bytes
 docs/nifi-docs/images/bgHeader.png                 |   Bin 0 -> 1455 bytes
 docs/nifi-docs/index.html                          |  7578 ++
 docs/nifi-docs/js/application.js                   |   400 +
 docs/nifi-docs/rest-api/images/bgNifiLogo.png      |   Bin 0 -> 5931 bytes
 docs/nifi-docs/rest-api/images/nifi16.ico          |   Bin 0 -> 1150 bytes
 docs/nifi-docs/rest-api/index.html                 | 81259 +++++++++++++++++++
 docs/nifi/assets/jquery/dist/jquery.min.js         |     2 +
 docs/nifi/images/nifi16.ico                        |   Bin 0 -> 1150 bytes
 913 files changed, 145720 insertions(+)

diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-ambari-nar/1.16.3/org.apache.nifi.reporting.ambari.AmbariReportingTask/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-ambari-nar/1.16.3/org.apache.nifi.reporting.ambari.AmbariReportingTask/additionalDetails.html
new file mode 100644
index 0000000..49409cf
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-ambari-nar/1.16.3/org.apache.nifi.reporting.ambari.AmbariReportingTask/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+    <head>
+        <meta charset="utf-8" />
+        <title>AmbariReportingTask</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>AmbariReportingTask</h2>
+
+        <p>This ReportingTask sends the following metrics to Ambari:</p>
+        <ul>
+            <li>FlowFilesReceivedLast5Minutes</li>
+            <li>BytesReceivedLast5Minutes</li>
+            <li>FlowFilesSentLast5Minutes</li>
+            <li>BytesSentLast5Minutes</li>
+            <li>FlowFilesQueued</li>
+            <li>BytesQueued</li>
+            <li>BytesReadLast5Minutes</li>
+            <li>BytesWrittenLast5Minutes</li>
+            <li>ActiveThreads</li>
+            <li>TotalTaskDurationSeconds</li>
+            <li>jvm.uptime</li>
+            <li>jvm.heap_used</li>
+            <li>jvm.heap_usage</li>
+            <li>jvm.non_heap_usage</li>
+            <li>jvm.thread_states.runnable</li>
+            <li>jvm.thread_states.blocked</li>
+            <li>jvm.thread_states.timed_waiting</li>
+            <li>jvm.thread_states.terminated</li>
+            <li>jvm.thread_count</li>
+            <li>jvm.daemon_thread_count</li>
+            <li>jvm.file_descriptor_usage</li>
+            <li>jvm.gc.runs</li>
+            <li>jvm.gc.time</li>
+        </ul>
+        <p>
+            In order to make use of these metrics in Ambari, a NIFI service must be created and installed
+            in Ambari. Please consult the Ambari and NiFi documentation for further details.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-ambari-nar/1.16.3/org.apache.nifi.reporting.ambari.AmbariReportingTask/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-ambari-nar/1.16.3/org.apache.nifi.reporting.ambari.AmbariReportingTask/index.html
new file mode 100644
index 0000000..76cfd09
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-ambari-nar/1.16.3/org.apache.nifi.reporting.ambari.AmbariReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AmbariReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AmbariReportingTask</h1><h2>Description: </h2><p>Publishes metrics from NiFi to Ambari Metric [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html
new file mode 100644
index 0000000..0659552
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ConsumeAMQP</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+    This processor consumes messages from AMQP messaging queue and converts them to a FlowFile to be routed to the next component in the flow.
+    At the time of writing this document the supported AMQP protocol version is v0.9.1.
+</p>
+<p>
+	The component is based on <a href="https://www.rabbitmq.com/api-guide.html">RabbitMQ Client API</a>
+	<a href="https://www.rabbitmq.com/getstarted.html">The following guide and tutorial</a> may also help you to brush up on some of the AMQP basics.
+</p>
+<p>
+    This processor does two things. It constructs FlwFile by extracting information from the consumed AMQP message (both body and attributes). 
+    Once message is consumed a FlowFile is constructed. The message body is written to a FlowFile and its <i>com.rabbitmq.client.AMQP.BasicProperties</i>
+    are transfered into the FlowFile as attributes. AMQP attribute names are prefixed with <i>amqp$</i> prefix.
+</p>
+<h2>AMQP Properties</h2>
+<p>
+    The following is the list of available standard AMQP properties which may come with the message: <i>("amqp$contentType", "amqp$contentEncoding",
+            "amqp$headers", "amqp$deliveryMode", "amqp$priority", "amqp$correlationId", "amqp$replyTo",
+            "amqp$expiration", "amqp$messageId", "amqp$timestamp", "amqp$type", "amqp$userId", "amqp$appId",
+            "amqp$clusterId", "amqp$routingKey")</i>
+</p>
+<h2>Configuration Details</h2>
+<p>
+    At the time of writing this document it only defines the essential configuration properties which are suitable for most cases. 
+    Other properties will be defined later as this component progresses.
+    Configuring PublishAMQP:
+</p>
+<ol>
+    <li><b>Queue</b> - [REQUIRED] the name of AMQP queue the messages will retrieved from. Usually provided by administrator (e.g., 'amq.direct')
+    </li>
+    <li><b>Host Name</b> - [REQUIRED] the name of the host where AMQP broker is running. 
+    Usually provided by administrator (e.g., 'myhost.com'). Defaults to 'localhost'.
+    </li>
+    <li><b>Port</b> - [REQUIRED] the port number where AMQP broker is running. 
+    Usually provided by the administrator (e.g., '2453'). Defaults to '5672'.
+    </li>
+    <li><b>User Name</b> - [REQUIRED] user name to connect to AMQP broker. 
+    Usually provided by the administrator (e.g., 'me'). Defaults to 'guest'.
+    </li>
+    <li><b>Password</b> - [REQUIRED] password to use with user name to connect to AMQP broker. 
+    Usually provided by the administrator. Defaults to 'guest'.
+    </li>
+    <li><b>Use Certificate Authentication</b> - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password.
+    This can only be used in conjunction with SSL. Defaults to 'false'.
+    </li>
+    <li><b>Virtual Host</b> - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security.
+    Please refer to <a href="http://blog.dtzq.com/2012/06/rabbitmq-users-and-virtual-hosts.html">this blog</a> for more details on Virtual Host.
+    </li>
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.ConsumeAMQP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.ConsumeAMQP/index.html
new file mode 100644
index 0000000..5daca9b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.ConsumeAMQP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeAMQP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeAMQP</h1><h2>Description: </h2><p>Consumes AMQP Messages from an AMQP Broker using the AMQP 0. [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html
new file mode 100644
index 0000000..7391b39
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PublishAMQP</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+    This processor publishes the contents of the incoming FlowFile to an AMQP-based messaging system.
+    At the time of writing this document the supported AMQP protocol version is v0.9.1.
+</p>
+<p>
+	The component is based on <a href="https://www.rabbitmq.com/api-guide.html">RabbitMQ Client API</a>
+	<a href="https://www.rabbitmq.com/getstarted.html">The following guide and tutorial</a> may also help you to brush up on some of the AMQP basics.
+</p>
+<p>
+    This processor does two things. It constructs AMQP Message by extracting FlowFile contents (both body and attributes). 
+    Once message is constructed it is sent to an AMQP Exchange.
+    AMQP Properties will be extracted from the FlowFile and converted to <i>com.rabbitmq.client.AMQP.BasicProperties</i> to be sent
+    along with the message. Upon success the incoming FlowFile is transfered to <i>success</i> Relationship and upon failure FlowFile is
+    penalized and transfered to the <i>failure</i> Relationship. 
+</p>
+<h2>Where did my message go?</h2>
+<p>
+    In a typical AMQP exchange model, the message that is sent to an AMQP Exchange will be routed based on the <i>Routing Key</i> 
+    to its final destination in the <i>Queue</i>. It's called <b>Binding</b>. If due to some misconfiguration the binding between the <i>Exchange, Routing Key
+    and the Queue</i> is not set up, the message will have no final destination and will return (i.e., the data will not make it to the queue). 
+    If that happens you will see a log in both app-log and bulletin stating to that effect. Fixing the binding (normally done by AMQP administrator) 
+    will resolve the issue.
+</p>
+<h2>AMQP Properties</h2>
+<p>
+	Attributes extracted from the FlowFile are considered candidates for AMQP
+    properties if their names are prefixed with <i>amqp$</i> (e.g., amqp$contentType=text/xml). To enrich message with additional AMQP properties 
+    you may use <b>UpdateAttribute</b> processor between the source processor and PublishAMQP processor.
+    The following is the list of available standard AMQP properties: <i>("amqp$contentType", "amqp$contentEncoding",
+            "amqp$headers", "amqp$deliveryMode", "amqp$priority", "amqp$correlationId", "amqp$replyTo",
+            "amqp$expiration", "amqp$messageId", "amqp$timestamp", "amqp$type", "amqp$userId", "amqp$appId",
+            "amqp$clusterId")</i>
+</p>
+<h2>Configuration Details</h2>
+<p>
+    At the time of writing this document it only defines the essential configuration properties which are suitable for most cases. 
+    Other properties will be defined later as this component progresses.
+    Configuring PublishAMQP:
+</p>
+<ol>
+    <li><b>Exchange Name</b> - [OPTIONAL] the name of AMQP exchange the messages will be sent to. Usually provided by the administrator (e.g., 'amq.direct')
+    It is an optional property. If kept empty the messages will be sent to a default AMQP exchange. More on AMQP Exchanges could be found 
+    <a href="https://www.rabbitmq.com/tutorials/amqp-concepts.html">here</a>.
+    </li>
+    <li><b>Routing Key</b> - [REQUIRED] the name of the routing key that will be used by AMQP to route messages from the exchange to destination queue(s). 
+    Usually provided by administrator (e.g., 'myKey')
+    In the event when messages are sent to a default exchange this property corresponds to a destination queue name, otherwise a binding from the Exchange to a Queue via 
+    Routing Key must be set (usually by the AMQP administrator). More on AMQP Exchanges and Bindings could be found 
+    <a href="https://www.rabbitmq.com/tutorials/amqp-concepts.html">here</a>.
+    </li>
+    <li><b>Host Name</b> - [REQUIRED] the name of the host where AMQP broker is running. 
+    Usually provided by administrator (e.g., 'myhost.com'). Defaults to 'localhost'.
+    </li>
+    <li><b>Port</b> - [REQUIRED] the port number where AMQP broker is running. 
+    Usually provided by the administrator (e.g., '2453'). Defaults to '5672'.
+    </li>
+    <li><b>User Name</b> - [REQUIRED] user name to connect to AMQP broker. 
+    Usually provided by the administrator (e.g., 'me'). Defaults to 'guest'.
+    </li>
+    <li><b>Password</b> - [REQUIRED] password to use with user name to connect to AMQP broker. 
+    Usually provided by the administrator. Defaults to 'guest'.
+    </li>
+    <li><b>Use Certificate Authentication</b> - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password.
+    This can only be used in conjunction with SSL. Defaults to 'false'.
+    </li>
+    <li><b>Virtual Host</b> - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security.
+    Please refer to <a href="http://blog.dtzq.com/2012/06/rabbitmq-users-and-virtual-hosts.html">this blog</a> for more details on Virtual Host.
+    </li>
+    
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.PublishAMQP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.PublishAMQP/index.html
new file mode 100644
index 0000000..ab15264
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-amqp-nar/1.16.3/org.apache.nifi.amqp.processors.PublishAMQP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishAMQP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishAMQP</h1><h2>Description: </h2><p>Creates an AMQP Message from the contents of a FlowFile and  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.ConvertAvroToJSON/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.ConvertAvroToJSON/index.html
new file mode 100644
index 0000000..c0d4f38
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.ConvertAvroToJSON/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConvertAvroToJSON</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConvertAvroToJSON</h1><h2>Description: </h2><p>Converts a Binary Avro record into a JSON object [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.ExtractAvroMetadata/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.ExtractAvroMetadata/index.html
new file mode 100644
index 0000000..4d5137f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.ExtractAvroMetadata/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractAvroMetadata</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractAvroMetadata</h1><h2>Description: </h2><p>Extracts metadata from the header of an Avro [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.SplitAvro/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.SplitAvro/index.html
new file mode 100644
index 0000000..3cc0d39
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-avro-nar/1.16.3/org.apache.nifi.processors.avro.SplitAvro/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SplitAvro</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SplitAvro</h1><h2>Description: </h2><p>Splits a binary encoded Avro datafile into smaller files based o [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric/index.html
new file mode 100644
index 0000000..9360ff6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCloudWatchMetric</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCloudWatchMetric</h1><h2>Description: </h2><p>Publishes metrics to Amazon CloudWatch. Metr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService/index.html
new file mode 100644
index 0000000..99077c7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AWSCredentialsProviderControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AWSCredentialsProviderControllerService</h1><h2>Description: </h2><p>Defi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.DeleteDynamoDB/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.DeleteDynamoDB/index.html
new file mode 100644
index 0000000..104ce84
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.DeleteDynamoDB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteDynamoDB</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteDynamoDB</h1><h2>Description: </h2><p>Deletes a document from DynamoDB based on hash and ran [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.GetDynamoDB/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.GetDynamoDB/index.html
new file mode 100644
index 0000000..940b2cb
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.GetDynamoDB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetDynamoDB</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetDynamoDB</h1><h2>Description: </h2><p>Retrieves a document from DynamoDB based on hash and range k [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDB/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDB/index.html
new file mode 100644
index 0000000..1204efd
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutDynamoDB</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutDynamoDB</h1><h2>Description: </h2><p>Puts a document from DynamoDB based on hash and range key.   [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/additionalDetails.html
new file mode 100644
index 0000000..690864a
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutDynamoDBRecord</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <h2>Description</h2>
+
+    <p>
+        <i>PutDynamoDBRecord</i> intends to provide the capability to insert multiple Items into a DynamoDB table from a record-oriented FlowFile.
+        Compared to the <i>PutDynamoDB</i>, this processor is capable to process data based other than JSON format too and prepared to add multiple fields for a given Item.
+        Also, <i>PutDynamoDBRecord</i> is designed to insert bigger batches of data into the database.
+    </p>
+
+    <h2>Data types</h2>
+
+    <p>
+        The list data types supported by DynamoDB does not fully overlaps with the capabilities of the Record data structure.
+        Some conversions and simplifications are necessary during inserting the data. These are:
+    </p>
+
+    <ul>
+        <li>Numeric values are stored using a floating-point data structure within Items. In some cases this representation might cause issues with the accuracy.</li>
+        <li>Char is not a supported type within DynamoDB, these fields are converted into String values.</li>
+        <li>Enum types are stored as String fields, using the name of the given enum.</li>
+        <li>DynamoDB stores time and date related information as Strings.</li>
+        <li>Internal record structures are converted into maps.</li>
+        <li>Choice is not a supported data type, regardless of the actual wrapped data type, values enveloped in Choice are handled as Strings.</li>
+        <li>Unknown data types are handled as stings.</li>
+    </ul>
+
+    <h2>Limitations</h2>
+
+    <p>
+        Working with DynamoDB when batch inserting comes with two inherit limitations. First, the number of inserted Items is limited to 25 in any case.
+        In order to overcome this, during one execution, depending on the number or records in the incoming FlowFile, <i>PutDynamoDBRecord</i> might attempt multiple
+        insert calls towards the database server. Using this approach, the flow does not have to work with this limitation in most cases.
+    </p>
+
+    <p>
+        Having multiple external actions comes with the risk of having an unforeseen result at one of the steps.
+        For example when the incoming FlowFile is consists of 70 records, it will be split into 3 chunks, with a single insert operation for every chunk.
+        The first two chunks contains 25 Items to insert per chunk, and the third contains the remaining 20. In some cases it might occur that the first two insert operation succeeds but the third one fails.
+        In these cases we consider the FlowFile "partially processed" and we will transfer it to the "failure" or "unprocessed" Relationship according to the nature of the issue.
+        In order to keep the information about the successfully processed chunks the processor assigns the <i>"dynamodb.chunks.processed"</i> attribute to the FlowFile, which has the number of successfully processed chunks as value.
+    </p>
+
+    <p>
+        The most common reason for this behaviour comes from the other limitation the inserts have with DynamoDB: the database has a build in supervision over the amount of inserted data.
+        When a client reaches the "throughput limit", the server refuses to process the insert request until a certain amount of time. More information on this might be find <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html">here</a>.
+        From the perspective of the <i>PutDynamoDBRecord</i> we consider these cases as temporary issues and the FlowFile will be transferred to the "unprocessed" Relationship after which the processor will yield in order to avoid further throughput issues.
+        (Other kinds of failures will result transfer to the "failure" Relationship)
+    </p>
+
+    <h2>Retry</h2>
+
+    <p>
+        It is suggested to loop back the "unprocessed" Relationship to the <i>PutDynamoDBRecord</i> in some way. FlowFiles transferred to that relationship considered as healthy ones might be successfully processed in a later point.
+        It is possible that the FlowFile contains such a high number of records, what needs more than two attempts to fully insert.
+        The attribute "dynamodb.chunks.processed" is "rolled" through the attempts, which means, after each trigger it will contain the sum number of inserted chunks making it possible for the later attempts to continue from the right point without duplicated inserts.
+    </p>
+
+    <h2>Partition and sort keys</h2>
+
+    <p>
+        The processor supports multiple strategies for assigning partition key and sort key to the inserted Items. These are:
+    </p>
+
+    <h3>Partition Key Strategies</h3>
+
+    <h4>Partition By Field</h4>
+
+    <p>
+        The processors assigns one of the record fields as partition key. The name of the record field is specified by the "Partition Key Field" property and the value will be the value of the record field with the same name.
+    </p>
+
+    <h4>Partition By Attribute</h4>
+
+    <p>
+        The processor assigns the value of a FlowFile attribute as partition key. With this strategy all the Items within a FlowFile will share the same partition key value and it is suggested to use for tables also having a sort key in order to meet the primary key requirements of the DynamoDB.
+        The property "Partition Key Field" defines the name of the Item field and the property "Partition Key Attribute" will specify which attribute's value will be assigned to the partition key.
+        With this strategy the "Partition Key Field" must be different from the fields consisted by the incoming records.
+    </p>
+
+    <h4>Generated UUID</h4>
+
+    <p>
+        By using this strategy the processor will generate a UUID identifier for every single Item. This identifier will be used as value for the partition key.
+        The name of the field used as partition key is defined by the property "Partition Key Field".
+        With this strategy the "Partition Key Field" must be different from the fields consisted by the incoming records.
+        When using this strategy, the partition key in the DynamoDB table must have String data type.
+    </p>
+
+    <h3>Sort Key Strategies</h3>
+
+    <h4>None</h4>
+
+    <p>
+        No sort key will be assigned to the Item. In case of the table definition expects it, using this strategy will result unsuccessful inserts.
+    </p>
+
+    <h4>Sort By Field</h4>
+
+    <p>
+        The processors assigns one of the record fields as sort key. The name of the record field is specified by the "Sort Key Field" property and the value will be the value of the record field with the same name.
+        With this strategy the "Sort Key Field" must be different from the fields consisted by the incoming records.
+    </p>
+
+    <h4>Generate Sequence</h4>
+
+    <p>
+        The processor assigns a generated value to every Item based on the original record's position in the incoming FlowFile (regardless of the chunks).
+        The first Item will have the sort key 1, the second will have sort key 2 and so on. The generated keys are unique within a given FlowFile.
+        The name of the record field is specified by the "Sort Key Field" attribute.
+        With this strategy the "Sort Key Field" must be different from the fields consisted by the incoming records.
+        When using this strategy, the sort key in the DynamoDB table must have Number data type.
+
+    </p>
+
+    <h2>Examples</h2>
+
+    <h3>Using fields as partition and sort key</h3>
+
+    <h4>Setup</h4>
+
+    <ul>
+        <li>Partition Key Strategy: Partition By Field</li>
+        <li>Partition Key Field: class</li>
+        <li>Sort Key Strategy: Sort By Field</li>
+        <li>Sort Key Field: size</li>
+    </ul>
+
+    <p>
+        Note: both fields have to exist in the incoming records!
+    </p>
+
+    <h4>Result</h4>
+
+    <p>
+        Using this pair of strategies will result Items identical to the incoming record (not counting the representational changes from the conversion).
+        The field specified by the properties are added to the Items normally with the only difference of flagged as (primary) key items.
+    </p>
+
+    <h4>Input</h4>
+
+    <code>
+[{"type": "A", "subtype": 4, "class" : "t", "size": 1}]
+    </code>
+
+    <h4>Output (stylized)</h4>
+
+    <ul>
+        <li>type: String field with value "A"</li>
+        <li>subtype: Number field with value 4</li>
+        <li>class: String field with value "t" and serving as partition key</li>
+        <li>size: Number field with value 1 and serving as sort key</li>
+    </ul>
+
+    <h3>Using FlowFile filename as partition key with generated sort key</h3>
+
+    <h4>Setup</h4>
+
+    <ul>
+        <li>Partition Key Strategy: Partition By Attribute</li>
+        <li>Partition Key Field: source</li>
+        <li>Partition Key Attribute: filename</li>
+        <li>Sort Key Strategy: Generate Sequence</li>
+        <li>Sort Key Field: sort</li>
+    </ul>
+
+    <h4>Result</h4>
+
+    <p>
+        The FlowFile's filename attribute will be used as partition key. In this case all the records within the same FlowFile will share the same partition key.
+        In order to avoid collusion, if FlowFiles contain multiple records, using sort key is suggested.
+        In this case a generated sequence is used which is guaranteed to be unique within a given FlowFile.
+    </p>
+
+    <h4>Input</h4>
+
+    <code>
+[
+    {"type": "A", "subtype": 4, "class" : "t", "size": 1},
+    {"type": "B", "subtype": 5, "class" : "m", "size": 2}
+]
+    </code>
+
+    <h4>Output (stylized)</h4>
+
+    <h5>First Item</h5>
+
+    <ul>
+        <li>source: String field with value "data46362.json" and serving as partition key</li>
+        <li>type: String field with value "A"</li>
+        <li>subtype: Number field with value 4</li>
+        <li>class: String field with value "t"</li>
+        <li>size: Number field with value 1</li>
+        <li>sort: Number field with value 1 and serving as sort key</li>
+    </ul>
+
+    <h5>Second Item</h5>
+
+    <ul>
+        <li>source: String field with value "data46362.json" and serving as partition key</li>
+        <li>type: String field with value "B"</li>
+        <li>subtype: Number field with value 5</li>
+        <li>class: String field with value "m"</li>
+        <li>size: Number field with value 2</li>
+        <li>sort: Number field with value 2 and serving as sort key</li>
+    </ul>
+
+    <h3>Using generated partition key</h3>
+
+    <h4>Setup</h4>
+
+    <ul>
+        <li>Partition Key Strategy: Generated UUID</li>
+        <li>Partition Key Field: identifier</li>
+        <li>Sort Key Strategy: None</li>
+    </ul>
+
+    <h4>Result</h4>
+
+    <p>
+        A generated UUID will be used as partition key. A different UUID will be generated for every Item.
+    </p>
+
+    <h4>Input</h4>
+
+    <code>
+        [{"type": "A", "subtype": 4, "class" : "t", "size": 1}]
+    </code>
+
+    <h4>Output (stylized)</h4>
+
+    <ul>
+        <li>identifier: String field with value "872ab776-ed73-4d37-a04a-807f0297e06e" and serving as partition key</li>
+        <li>type: String field with value "A"</li>
+        <li>subtype: Number field with value 4</li>
+        <li>class: String field with value "t"</li>
+        <li>size: Number field with value 1</li>
+    </ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/index.html
new file mode 100644
index 0000000..8f2a778
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutDynamoDBRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutDynamoDBRecord</h1><h2>Description: </h2><p>Inserts items into DynamoDB based on record-orie [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.firehose.PutKinesisFirehose/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.firehose.PutKinesisFirehose/index.html
new file mode 100644
index 0000000..da5b1c7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.firehose.PutKinesisFirehose/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutKinesisFirehose</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutKinesisFirehose</h1><h2>Description: </h2><p>Sends the contents to a specified Amazon Kines [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/additionalDetails.html
new file mode 100644
index 0000000..d03c463
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/additionalDetails.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+
+<head>
+    <meta charset="utf-8"/>
+    <title>ConsumeKinesisStream</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batch Processing</h1>
+<p>
+    ConsumeKinesisStream retrieves all Kinesis Records that it encounters in the configured Kinesis Stream.
+    There are two common, broadly defined use cases.
+</p>
+
+<h3>Per-Message Use Case</h3>
+<p>
+    By default, the Processor will create a separate FlowFile for each Kinesis Record (message) in the Stream
+    and add attributes for shard id, sequence number, etc.
+</p>
+
+<h3>Per-Batch Use Case</h3>
+<p>
+    Another common use case is the desire to process all Kinesis Records retrieved from the Stream in a batch as a single FlowFile.
+</p>
+
+<p>
+    The ConsumeKinesisStream Processor can optionally be configured with a Record Reader and Record Writer.
+    When a Record Reader and Record Writer are configured, a single FlowFile will be created that will contain a Record
+    for each Record within the batch of Kinesis Records (messages), instead of a separate FlowFile per Kinesis Record.
+</p>
+
+<p>
+    The FlowFiles emitted in this mode will include the standard <code>record.*</code> attributes along with the same
+    Kinesis Shard ID, Sequence Number and Approximate Arrival Timestamp; but the values will relate to the <b>last</b>
+    Kinesis Record that was processed in the batch of messages constituting the content of the FlowFile.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/index.html
new file mode 100644
index 0000000..b751704
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKinesisStream</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKinesisStream</h1><h2>Description: </h2><p>Reads data from the specified AWS Kinesis  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.PutKinesisStream/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.PutKinesisStream/index.html
new file mode 100644
index 0000000..38afbe0
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.kinesis.stream.PutKinesisStream/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutKinesisStream</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutKinesisStream</h1><h2>Description: </h2><p>Sends the contents to a specified Amazon Kinesis.  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.lambda.PutLambda/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.lambda.PutLambda/index.html
new file mode 100644
index 0000000..7d0c5d9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.lambda.PutLambda/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutLambda</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutLambda</h1><h2>Description: </h2><p>Sends the contents to a specified Amazon Lambda Function. The AW [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.DeleteS3Object/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.DeleteS3Object/index.html
new file mode 100644
index 0000000..5f32f42
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.DeleteS3Object/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteS3Object</h1><h2>Description: </h2><p>Deletes FlowFiles on an Amazon S3 Bucket. If attemptin [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.FetchS3Object/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.FetchS3Object/index.html
new file mode 100644
index 0000000..86b7691
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.FetchS3Object/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchS3Object</h1><h2>Description: </h2><p>Retrieves the contents of an S3 Object and writes it to  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.ListS3/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.ListS3/additionalDetails.html
new file mode 100644
index 0000000..c717e98
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.ListS3/additionalDetails.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+
+<head>
+    <meta charset="utf-8"/>
+    <title>ListS3</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batch Processing</h1>
+
+<p>
+    ListS3 performs a listing of all S3 Objects that it encounters in the configured S3 bucket.
+    There are two common, broadly defined use cases.
+</p>
+
+<h3>Streaming Use Case</h3>
+
+<p>
+    By default, the Processor will create a separate FlowFile for each object in the bucket and add attributes for filename, bucket, etc.
+    A common use case is to connect ListS3 to the FetchS3 processor. These two processors used in conjunction with one another provide the ability to
+    easily monitor a bucket and fetch the contents of any new object as it lands in S3 in an efficient streaming fashion.
+</p>
+
+<h3>Batch Use Case</h3>
+<p>
+    Another common use case is the desire to process all newly arriving objects in a given bucket, and to then perform some action
+    only when all objects have completed their processing. The above approach of streaming the data makes this difficult, because NiFi is inherently
+    a streaming platform in that there is no "job" that has a beginning and an end. Data is simply picked up as it becomes available.
+</p>
+
+<p>
+    To solve this, the ListS3 Processor can optionally be configured with a Record Writer. When a Record Writer is configured, a single
+    FlowFile will be created that will contain a Record for each object in the bucket, instead of a separate FlowFile per object.
+    See the documentation for ListFile for an example of how to build a dataflow that allows for processing all of the objects before proceeding
+    with any other step.
+</p>
+
+<p>
+    One important difference between the data produced by ListFile and ListS3, though, is the structure of the Records that are emitted. The Records
+    emitted by ListFile have a different schema than those emitted by ListS3. ListS3 emits records that follow the following schema (in Avro format):
+</p>
+
+<code>
+    <pre>
+{
+  "type": "record",
+  "name": "nifiRecord",
+  "namespace": "org.apache.nifi",
+  "fields": [{
+    "name": "key",
+    "type": "string"
+  }, {
+    "name": "bucket",
+    "type": "string"
+  }, {
+    "name": "owner",
+    "type": ["null", "string"]
+  }, {
+    "name": "etag",
+    "type": "string"
+  }, {
+    "name": "lastModified",
+    "type": {
+      "type": "long",
+      "logicalType": "timestamp-millis"
+    }
+  }, {
+    "name": "size",
+    "type": "long"
+  }, {
+    "name": "storageClass",
+    "type": "string"
+  }, {
+    "name": "latest",
+    "type": "boolean"
+  }, {
+    "name": "versionId",
+    "type": ["null", "string"]
+  }, {
+    "name": "tags",
+    "type": ["null", {
+      "type": "map",
+      "values": "string"
+    }]
+  }, {
+    "name": "userMetadata",
+    "type": ["null", {
+      "type": "map",
+      "values": "string"
+    }]
+  }]
+}
+    </pre>
+</code>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.ListS3/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.ListS3/index.html
new file mode 100644
index 0000000..6810346
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.ListS3/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListS3</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListS3</h1><h2>Description: </h2><p>Retrieves a listing of objects from an S3 bucket. For each object that [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.PutS3Object/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.PutS3Object/additionalDetails.html
new file mode 100644
index 0000000..50a0210
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.PutS3Object/additionalDetails.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutS3Object</title>
+
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+	<h2>Configuration Details</h2>
+	<h3>Object Key</h3>
+	<p>The Object Key property value should not start with "/".</p>
+	<h3>Credentials File</h3>
+    <p>The Credentials File property allows the user to specify the path to a file containing the AWS access key and secret key. The contents of the file should be in the following format:</p>
+    <pre>
+        [default]
+		accessKey=&lt;access key&gt;
+		secretKey=&lt;security key&gt;
+    </pre>
+    <p>Make sure the credentials file is readable by the NiFi service user.</p>
+    <p>When using the Credential File property, ensure that there are no values for the Access Key and Secret Key properties.  The Value column should read "No value set" for both.  <b>Note:</b> Do not check "Set empty string" for either as the empty string is considered a set value.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.PutS3Object/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.PutS3Object/index.html
new file mode 100644
index 0000000..cf9cbc9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.PutS3Object/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutS3Object</h1><h2>Description: </h2><p>Puts FlowFiles to an Amazon S3 Bucket.
+The upload uses either the PutS3Object method or the PutS3MultipartUpload method.  The PutS3Object method sends the file in a single synchronous call, but it has a 5GB size limit.  Larger files are sent using the PutS3MultipartUpload method.  This multipart process saves state after each step so that a large upload can be resumed with minimal loss if the processor or cluster is stopped and restarted.
+A multipart upload consists of three steps:
+  1) initiate upload,
+  2) upload the parts, and
+  3) complete the upload.
+For multipart uploads, the processor saves state locally tracking the upload ID and parts uploaded, which must both be provided to complete the upload.
+The AWS libraries select an endpoint URL based on the AWS region, but this can be overridden with the 'Endpoint Override URL' property for use with other S3-compatible endpoints.
+The S3 API specifies that the maximum file size for a PutS3Object upload is 5GB. It also requires that parts in a multipart upload must be at least 5MB in size, except for the last part.  These limits establish the bounds for the Multipart Upload Threshold and Part Size properties.</p><p><a href="additionalDetails.html">Additional Details...</a></p><h3>Tags: </h3><p>Amazon, S3, AWS, Archive, Put</p><h3>Properties: </h3><p>In the list below, the names of required properties appear in <str [...]
+AWS S3 Java client will attempt to determine the correct content type if one hasn't been set yet. Users are responsible for ensuring a suitable content type is set when uploading streams. If no content type is provided and cannot be determined by the filename, the default content type "application/octet-stream" will be used.<br/><strong>Supports Expression Language: true (will be evaluated using flow file attributes and variable registry)</strong></td></tr><tr><td id="name">Content Dispo [...]
+ Possible values are 'inline' or 'attachment'. If this property is not specified, object's content-disposition will be set to filename. When 'attachment' is selected, '; filename=' plus object key are automatically appended to form final value 'attachment; filename="filename.jpg"'.</td></tr><tr><td id="name">Cache Control</td><td></td><td id="allowable-values"></td><td id="description">Sets the Cache-Control HTTP header indicating the caching directives of the associated object. Multiple [...]
+The valid range is 50MB to 5GB.</td></tr><tr><td id="name"><strong>Multipart Part Size</strong></td><td id="default-value">5 GB</td><td id="allowable-values"></td><td id="description">Specifies the part size for use when the PutS3Multipart Upload API is used.
+Flow files will be broken into chunks of this size for the upload process, but the last part sent can be smaller since it is not padded.
+The valid range is 50MB to 5GB.</td></tr><tr><td id="name"><strong>Multipart Upload AgeOff Interval</strong></td><td id="default-value">60 min</td><td id="allowable-values"></td><td id="description">Specifies the interval at which existing multipart uploads in AWS S3 will be evaluated for ageoff.  When processor is triggered it will initiate the ageoff evaluation if this interval has been exceeded.</td></tr><tr><td id="name"><strong>Multipart Upload Max Age Threshold</strong></td><td id= [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.TagS3Object/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.TagS3Object/index.html
new file mode 100644
index 0000000..27a58fb
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.TagS3Object/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>TagS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">TagS3Object</h1><h2>Description: </h2><p>Sets tags on a FlowFile within an Amazon S3 Bucket. If attem [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/additionalDetails.html
new file mode 100644
index 0000000..b53cffe
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/additionalDetails.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>S3EncryptionService</title>
+
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+<h2>Description</h2>
+<div>
+    The <code>StandardS3EncryptionService</code> manages an encryption strategy and applies that strategy to various S3 operations.
+
+    <br>
+
+    <b>Note:</b> This service has no effect when a processor has the <code>Server Side Encryption</code> property set. To use
+    this service with processors so configured, first create a service instance, set the <code>Encryption Strategy</code> to <code>Server-side S3</code>,
+    disable the <code>Server Side Encryption</code> processor setting, and finally, associate the processor with the service.
+</div>
+
+
+<h2>Configuration Details</h2>
+<h3>Encryption Strategy</h3>
+
+<div>
+    The name of the specific encryption strategy for this service to use when encrypting and decrypting S3 operations.
+
+    <ul>
+        <li><code>None</code> - no encryption is configured or applied.</li>
+        <li><code>Server-side S3</code> - encryption and decryption is managed by S3; no keys are required.</li>
+        <li><code>Server-side KMS</code> - encryption and decryption are performed by S3 using the configured KMS key.</li>
+        <li><code>Server-side Customer Key</code> - encryption and decryption are performed by S3 using the supplied customer key.</li>
+        <li><code>Client-side KMS</code> - like the Server-side KMS strategy, with the encryption and decryption performed by the client.</li>
+        <li><code>Client-side Customer Key</code> - like the Server-side Customer Key strategy, with the encryption and decryption performed by the client.</li>
+    </ul>
+</div>
+
+<h3>Key ID or Key Material</h3>
+<p>
+    When configured for either the Server-side or Client-side KMS strategies, this field should contain the KMS Key ID.
+</p>
+<p>
+    When configured for either the Server-side or Client-side Customer Key strategies, this field should contain the key
+    material, and that material must be base64 encoded.
+</p>
+<p>
+    All other encryption strategies ignore this field.
+</p>
+
+<h3>KMS Region</h3>
+<div>
+    KMS key region, if any. This value must match the actual region of the KMS key if supplied.
+</div>
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/index.html
new file mode 100644
index 0000000..07e5b03
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardS3EncryptionService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardS3EncryptionService</h1><h2>Description: </h2><p>Adds configurable encryption [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sns.PutSNS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sns.PutSNS/index.html
new file mode 100644
index 0000000..06ad0fd
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sns.PutSNS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutSNS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutSNS</h1><h2>Description: </h2><p>Sends the content of a FlowFile as a notification to the Amazon Simple [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.DeleteSQS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.DeleteSQS/index.html
new file mode 100644
index 0000000..a7cfd74
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.DeleteSQS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteSQS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteSQS</h1><h2>Description: </h2><p>Deletes a message from an Amazon Simple Queuing Service Queue</p [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.GetSQS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.GetSQS/index.html
new file mode 100644
index 0000000..ab1dd85
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.GetSQS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetSQS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetSQS</h1><h2>Description: </h2><p>Fetches messages from an Amazon Simple Queuing Service Queue</p><h3>Ta [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.PutSQS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.PutSQS/index.html
new file mode 100644
index 0000000..c4a4b42
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.sqs.PutSQS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutSQS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutSQS</h1><h2>Description: </h2><p>Publishes a message to an Amazon Simple Queuing Service Queue</p><h3>T [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.wag.InvokeAWSGatewayApi/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.wag.InvokeAWSGatewayApi/index.html
new file mode 100644
index 0000000..051542d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-aws-nar/1.16.3/org.apache.nifi.processors.aws.wag.InvokeAWSGatewayApi/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>InvokeAWSGatewayApi</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">InvokeAWSGatewayApi</h1><h2>Description: </h2><p>Client for AWS Gateway API endpoint</p><h3>T [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.cosmos.document.PutAzureCosmosDBRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.cosmos.document.PutAzureCosmosDBRecord/index.html
new file mode 100644
index 0000000..a7f549f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.cosmos.document.PutAzureCosmosDBRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureCosmosDBRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureCosmosDBRecord</h1><h2>Description: </h2><p>This processor is a record-aware proce [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.ConsumeAzureEventHub/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.ConsumeAzureEventHub/index.html
new file mode 100644
index 0000000..a71dff4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.ConsumeAzureEventHub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeAzureEventHub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeAzureEventHub</h1><h2>Description: </h2><p>Receives messages from Azure Event Hubs, w [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.GetAzureEventHub/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.GetAzureEventHub/index.html
new file mode 100644
index 0000000..ad3f5c8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.GetAzureEventHub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAzureEventHub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAzureEventHub</h1><h2>Description: </h2><p>Receives messages from Microsoft Azure Event Hubs, [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.PutAzureEventHub/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.PutAzureEventHub/index.html
new file mode 100644
index 0000000..3d63d4c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.eventhub.PutAzureEventHub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureEventHub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureEventHub</h1><h2>Description: </h2><p>Sends the contents of a FlowFile to Windows Azure  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage/index.html
new file mode 100644
index 0000000..00931e7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteAzureBlobStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteAzureBlobStorage</h1><h2>Description: </h2><p>Deletes the provided blob from Azure S [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage_v12/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..df46a07
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteAzureBlobStorage_v12</h1><h2>Description: </h2><p>Deletes the specified blob fro [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureDataLakeStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..75a340f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.DeleteAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteAzureDataLakeStorage</h1><h2>Description: </h2><p>Deletes the provided file from [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage/index.html
new file mode 100644
index 0000000..f7a0fdc
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchAzureBlobStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchAzureBlobStorage</h1><h2>Description: </h2><p>Retrieves contents of an Azure Storage B [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage_v12/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..95a7516
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchAzureBlobStorage_v12</h1><h2>Description: </h2><p>Retrieves the specified blob fro [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureDataLakeStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..b69f226
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.FetchAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchAzureDataLakeStorage</h1><h2>Description: </h2><p>Fetch the provided file from Azu [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage/index.html
new file mode 100644
index 0000000..3406654
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListAzureBlobStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListAzureBlobStorage</h1><h2>Description: </h2><p>Lists blobs in an Azure Storage container. [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage_v12/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..5d99be6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListAzureBlobStorage_v12</h1><h2>Description: </h2><p>Lists blobs in an Azure Blob Stora [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureDataLakeStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..e61bdc3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.ListAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListAzureDataLakeStorage</h1><h2>Description: </h2><p>Lists directory in an Azure Data L [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.MoveAzureDataLakeStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.MoveAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..6499cf6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.MoveAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>MoveAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">MoveAzureDataLakeStorage</h1><h2>Description: </h2><p>Moves content within an Azure Data [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage/index.html
new file mode 100644
index 0000000..76d940a
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureBlobStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureBlobStorage</h1><h2>Description: </h2><p>Puts content into an Azure Storage Blob</p>< [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage_v12/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..cd5302e
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureBlobStorage_v12</h1><h2>Description: </h2><p>Puts content into a blob on Azure Bl [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/additionalDetails.html
new file mode 100644
index 0000000..734acd3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutAzureDataLakeStorage</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+
+<p>
+    This processor is responsible for uploading files to Azure Data Lake Storage Gen2.
+</p>
+
+<h3>File uploading and cleanup process</h3>
+
+<h4>New file</h4>
+
+<ol>
+    <li>An empty file is created.</li>
+    <li>Content is appended to file.</li>
+    <li>In case append failure the file is deleted.</li>
+    <li>In case file deletion failure the empty file remains on the server.</li>
+</ol>
+
+<h4>Existing file</h4>
+
+<ul>
+    <li>Processors with "fail" conflict resolution strategy will be directed to "Failure" relationship.</li>
+     <li>Processors with "ignore" conflict resolution strategy will be directed to "Success" relationship.</li>
+    <li>Processors with "replace" conflict resolution strategy:</li>
+
+    <ol>
+        <li>An empty file overwrites the existing file, the original file is lost.</li>
+        <li>Content is appended to file.</li>
+        <li>In case append failure the file is deleted.</li>
+        <li>In case file deletion failure the empty file remains on the server.</li>
+    </ol>
+</ul>
+
+</body>
+</html>
+
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..177bbb3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureDataLakeStorage</h1><h2>Description: </h2><p>Puts content into an Azure Data Lake [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.queue.GetAzureQueueStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.queue.GetAzureQueueStorage/index.html
new file mode 100644
index 0000000..cd6d7b8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.queue.GetAzureQueueStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAzureQueueStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAzureQueueStorage</h1><h2>Description: </h2><p>Retrieves the messages from an Azure Queue [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.queue.PutAzureQueueStorage/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.queue.PutAzureQueueStorage/index.html
new file mode 100644
index 0000000..784d7b6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.processors.azure.storage.queue.PutAzureQueueStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureQueueStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureQueueStorage</h1><h2>Description: </h2><p>Writes the content of the incoming FlowFil [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsProvenanceReportingTask/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsProvenanceReportingTask/index.html
new file mode 100644
index 0000000..560fba5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsProvenanceReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureLogAnalyticsProvenanceReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureLogAnalyticsProvenanceReportingTask</h1><h2>Description: </h2><p>Pu [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsReportingTask/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsReportingTask/index.html
new file mode 100644
index 0000000..dea39dc
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureLogAnalyticsReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureLogAnalyticsReportingTask</h1><h2>Description: </h2><p>Sends JVM-metrics as w [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.cosmos.document.AzureCosmosDBClientService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.cosmos.document.AzureCosmosDBClientService/index.html
new file mode 100644
index 0000000..1908944
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.cosmos.document.AzureCosmosDBClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureCosmosDBClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureCosmosDBClientService</h1><h2>Description: </h2><p>Provides a controller service  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/additionalDetails.html
new file mode 100644
index 0000000..760b215
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/additionalDetails.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ADLSCredentialsControllerService</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+
+<h3>Security considerations of using Expression Language for sensitive properties</h3>
+
+<p>
+    Allowing Expression Language for a property has the advantage of configuring the property dynamically via FlowFile attributes
+    or Variable Registry entries. In case of sensitive properties, it also has a drawback of exposing sensitive information like
+    passwords, security keys or tokens. When the value of a sensitive property comes from a FlowFile attribute, it travels by the
+    FlowFile in clear text form and is also saved in the provenance repository. Variable Registry does not support the encryption of
+    sensitive information either. Due to these, the sensitive credential data can be exposed to unauthorized parties.
+<p>
+    Best practices for using Expression Language for sensitive properties:
+    <ul>
+        <li>use it only if necessary</li>
+        <li>control access to the flow and to provenance repository</li>
+        <li>encrypt disks storing FlowFiles and provenance data</li>
+        <li>if the sensitive data is a temporary token (like the SAS token), use a shorter lifetime and refresh the token periodically</li>
+    </ul>
+
+</body>
+</html>
+
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/index.html
new file mode 100644
index 0000000..423dff4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ADLSCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ADLSCredentialsControllerService</h1><h2>Description: </h2><p>Defines credential [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService/index.html
new file mode 100644
index 0000000..f296d59
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureStorageCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureStorageCredentialsControllerService</h1><h2>Description: </h2><p>De [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerServiceLookup/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerServiceLookup/index.html
new file mode 100644
index 0000000..c7613e1
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerServiceLookup/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureStorageCredentialsControllerServiceLookup</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureStorageCredentialsControllerServiceLookup</h1><h2>Description [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService_v12/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService_v12/index.html
new file mode 100644
index 0000000..25a1d97
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureStorageCredentialsControllerService_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureStorageCredentialsControllerService_v12</h1><h2>Description: </ [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageEmulatorCredentialsControllerService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageEmulatorCredentialsControllerService/index.html
new file mode 100644
index 0000000..6d38e03
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-azure-nar/1.16.3/org.apache.nifi.services.azure.storage.AzureStorageEmulatorCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureStorageEmulatorCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureStorageEmulatorCredentialsControllerService</h1><h2>Descrip [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.PutCassandraQL/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.PutCassandraQL/index.html
new file mode 100644
index 0000000..262f435
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.PutCassandraQL/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCassandraQL</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCassandraQL</h1><h2>Description: </h2><p>Execute provided Cassandra Query Language (CQL) statem [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.PutCassandraRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.PutCassandraRecord/index.html
new file mode 100644
index 0000000..28c4bd4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.PutCassandraRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCassandraRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCassandraRecord</h1><h2>Description: </h2><p>This is a record aware processor that reads th [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.QueryCassandra/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.QueryCassandra/index.html
new file mode 100644
index 0000000..a01d453
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-nar/1.16.3/org.apache.nifi.processors.cassandra.QueryCassandra/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryCassandra</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryCassandra</h1><h2>Description: </h2><p>Execute provided Cassandra Query Language (CQL) select [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-services-nar/1.16.3/org.apache.nifi.controller.cassandra.CassandraDistributedMapCache/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-services-nar/1.16.3/org.apache.nifi.controller.cassandra.CassandraDistributedMapCache/index.html
new file mode 100644
index 0000000..ab55606
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-services-nar/1.16.3/org.apache.nifi.controller.cassandra.CassandraDistributedMapCache/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CassandraDistributedMapCache</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CassandraDistributedMapCache</h1><h2>Description: </h2><p>Provides a DistributedMapC [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-services-nar/1.16.3/org.apache.nifi.service.CassandraSessionProvider/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-services-nar/1.16.3/org.apache.nifi.service.CassandraSessionProvider/index.html
new file mode 100644
index 0000000..1a12342
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cassandra-services-nar/1.16.3/org.apache.nifi.service.CassandraSessionProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CassandraSessionProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CassandraSessionProvider</h1><h2>Description: </h2><p>Provides connection session for Ca [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/1.16.3/org.apache.nifi.processors.ccda.ExtractCCDAAttributes/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/1.16.3/org.apache.nifi.processors.ccda.ExtractCCDAAttributes/additionalDetails.html
new file mode 100644
index 0000000..33ba9b5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/1.16.3/org.apache.nifi.processors.ccda.ExtractCCDAAttributes/additionalDetails.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ExtractCCDAAttributes</title>
+        <link rel="stylesheet" href="http://localhost:8080/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <!-- Processor Documentation ================================================== -->
+        <h2>Apache NiFi C-CDA Processor</h2>
+        <p>
+            C-CDA Processor Bundle provides parser for Consolidated-CDA documents</br>
+            This processor parses C-CDA and sets attributes as FlowFile attributes. The attributes are named as &lt;Parent&gt; &lt;dot&gt; &lt;Key&gt;.</br>
+            If the Parent is repeating, the naming will be &lt;Parent&gt; &lt;underscore&gt; &lt;Parent Index&gt; &lt;dot&gt; &lt;Key&gt;.</br>
+        </p>
+        <h3>Example Attribute Output</h3>
+        <p>
+            <pre><code>
+    problemSection.act.observation.problemStatus.code.code=33999-4
+    problemSection.act.observation.problemStatus.code.codeSystem=2.16.840.1.113883.6.1
+    problemSection.act.observation.problemStatus.code.codeSystemName=LOINC
+    problemSection.act.observation.problemStatus.code.displayName=Status
+    problemSection.act.observation.problemStatus.statusCode.code=completed
+    problemSection.act.observation.statusCode.code=completed
+            </code></pre>
+        </p>
+        <h3>Example Parser Mapping</h3>
+        <p>
+            This processor is driven by a mapping file which specifies the element relationships. For example
+            <pre><code>
+    org.openhealthtools.mdht.uml.cda.consol.impl.ProblemObservationImpl=id#element.ids\
+        @values#element.values[0]\
+        @statusCode#element.statusCode\
+        @effectiveTime#element.effectiveTime\
+        @negation#element.negationInd\
+        @problemStatus#element.problemStatus
+    org.openhealthtools.mdht.uml.cda.consol.impl.ProblemStatusImpl=id#element.id\
+        @code#element.code\
+        @values#element.values[0]\
+        @statusCode#element.statusCode
+            </code></pre>
+        </p>
+        <h3>References</h3>
+        <p>
+            These mappings are defined as per the implementation guide&mdash;<a href="http://www.hl7.org/documentcenter/public/standards/dstu/CDAR2_IG_IHE_CONSOL_DSTU_R1dot1_2012JUL.zip">HL7 Implementation Guide for CDA&reg; Release 2</a></br>
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/1.16.3/org.apache.nifi.processors.ccda.ExtractCCDAAttributes/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/1.16.3/org.apache.nifi.processors.ccda.ExtractCCDAAttributes/index.html
new file mode 100644
index 0000000..f751596
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-ccda-nar/1.16.3/org.apache.nifi.processors.ccda.ExtractCCDAAttributes/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractCCDAAttributes</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractCCDAAttributes</h1><h2>Description: </h2><p>Extracts information from an Consolidate [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cdc-mysql-nar/1.16.3/org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cdc-mysql-nar/1.16.3/org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL/index.html
new file mode 100644
index 0000000..5aa66f1
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cdc-mysql-nar/1.16.3/org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CaptureChangeMySQL</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CaptureChangeMySQL</h1><h2>Description: </h2><p>Retrieves Change Data Capture (CDC) events fro [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-confluent-platform-nar/1.16.3/org.apache.nifi.confluent.schemaregistry.ConfluentSchemaRegistry/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-confluent-platform-nar/1.16.3/org.apache.nifi.confluent.schemaregistry.ConfluentSchemaRegistry/index.html
new file mode 100644
index 0000000..cdf6ea6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-confluent-platform-nar/1.16.3/org.apache.nifi.confluent.schemaregistry.ConfluentSchemaRegistry/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConfluentSchemaRegistry</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConfluentSchemaRegistry</h1><h2>Description: </h2><p>Provides a Schema Registry that inte [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseClusterService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseClusterService/index.html
new file mode 100644
index 0000000..a910f74
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseClusterService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseClusterService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseClusterService</h1><h2>Description: </h2><p>Provides a centralized Couchbase con [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseKeyValueLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseKeyValueLookupService/index.html
new file mode 100644
index 0000000..6f4edba
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseKeyValueLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseKeyValueLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseKeyValueLookupService</h1><h2>Description: </h2><p>Lookup a string value  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseMapCacheClient/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseMapCacheClient/additionalDetails.html
new file mode 100644
index 0000000..376fc4d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseMapCacheClient/additionalDetails.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>CouchbaseMapCacheClient</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>CouchbaseMapCacheClient</h2>
+
+<h3>Requirements</h3>
+
+<h4>Couchbase Server 4.0 or higher is required for some operation using N1QL</h4>
+
+Following cache operations require N1QL query, thus you need to deploy Couchbase Server 4.0 or higher for those operations. However, as of this writing (May 2017) there are only few processors using these operations. Most cache APIs are implemented using document id lookup and should work with older version of Couchbase Server.
+
+<ul>
+    <li>removeByPattern(String regex): This cache API removes entries by regex. Execute query like:
+        <pre>delete from `cache-bucket-name` where REGEX_CONTAINS(meta().id, "^key.*")</pre>
+    </li>
+</ul>
+
+In order to make N1QL work correctly you need to create a <a href="https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/createprimaryindex.html">Primary index</a> or an index covering N1QL queries performed by CouchbaseMapCacheClient. Please refer Couchbase Server documentations for how to create those.
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseMapCacheClient/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseMapCacheClient/index.html
new file mode 100644
index 0000000..9fc66ee
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseMapCacheClient/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseMapCacheClient</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseMapCacheClient</h1><h2>Description: </h2><p>Provides the ability to communicate  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseRecordLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseRecordLookupService/index.html
new file mode 100644
index 0000000..f4a120e
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.couchbase.CouchbaseRecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseRecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseRecordLookupService</h1><h2>Description: </h2><p>Lookup a record from Couch [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.processors.couchbase.GetCouchbaseKey/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.processors.couchbase.GetCouchbaseKey/index.html
new file mode 100644
index 0000000..f019601
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.processors.couchbase.GetCouchbaseKey/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetCouchbaseKey</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetCouchbaseKey</h1><h2>Description: </h2><p>Get a document from Couchbase Server via Key/Value a [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.processors.couchbase.PutCouchbaseKey/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.processors.couchbase.PutCouchbaseKey/index.html
new file mode 100644
index 0000000..5302fa8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-couchbase-nar/1.16.3/org.apache.nifi.processors.couchbase.PutCouchbaseKey/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCouchbaseKey</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCouchbaseKey</h1><h2>Description: </h2><p>Put a document to Couchbase Server via Key/Value acc [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cybersecurity-nar/1.16.3/org.apache.nifi.processors.cybersecurity.CompareFuzzyHash/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cybersecurity-nar/1.16.3/org.apache.nifi.processors.cybersecurity.CompareFuzzyHash/index.html
new file mode 100644
index 0000000..3470f36
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cybersecurity-nar/1.16.3/org.apache.nifi.processors.cybersecurity.CompareFuzzyHash/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CompareFuzzyHash</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CompareFuzzyHash</h1><h2>Description: </h2><p>Compares an attribute containing a Fuzzy Hash agai [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-cybersecurity-nar/1.16.3/org.apache.nifi.processors.cybersecurity.FuzzyHashContent/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-cybersecurity-nar/1.16.3/org.apache.nifi.processors.cybersecurity.FuzzyHashContent/index.html
new file mode 100644
index 0000000..a03aa68
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-cybersecurity-nar/1.16.3/org.apache.nifi.processors.cybersecurity.FuzzyHashContent/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FuzzyHashContent</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FuzzyHashContent</h1><h2>Description: </h2><p>Calculates a fuzzy/locality-sensitive hash value f [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-datadog-nar/1.16.3/org.apache.nifi.reporting.datadog.DataDogReportingTask/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-datadog-nar/1.16.3/org.apache.nifi.reporting.datadog.DataDogReportingTask/additionalDetails.html
new file mode 100644
index 0000000..0672a88
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-datadog-nar/1.16.3/org.apache.nifi.reporting.datadog.DataDogReportingTask/additionalDetails.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+    <head>
+        <meta charset="utf-8" />
+        <title>DataDogReportingTask</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>DataDogReportingTask</h2>
+
+        <p>This ReportingTask sends the following metrics to DataDog:</p>
+        <ul>
+            <li>FlowFilesReceivedLast5Minutes</li>
+            <li>BytesReceivedLast5Minutes</li>
+            <li>FlowFilesSentLast5Minutes</li>
+            <li>BytesSentLast5Minutes</li>
+            <li>FlowFilesQueued</li>
+            <li>BytesQueued</li>
+            <li>BytesReadLast5Minutes</li>
+            <li>BytesWrittenLast5Minutes</li>
+            <li>ActiveThreads</li>
+            <li>TotalTaskDurationSeconds</li>
+            <li>jvm.uptime</li>
+            <li>jvm.heap_used</li>
+            <li>jvm.heap_usage</li>
+            <li>jvm.non_heap_usage</li>
+            <li>jvm.thread_states.runnable</li>
+            <li>jvm.thread_states.blocked</li>
+            <li>jvm.thread_states.timed_waiting</li>
+            <li>jvm.thread_states.terminated</li>
+            <li>jvm.thread_count</li>
+            <li>jvm.daemon_thread_count</li>
+            <li>jvm.file_descriptor_usage</li>
+            <li>jvm.gc.runs</li>
+            <li>jvm.gc.time</li>
+        </ul>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-datadog-nar/1.16.3/org.apache.nifi.reporting.datadog.DataDogReportingTask/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-datadog-nar/1.16.3/org.apache.nifi.reporting.datadog.DataDogReportingTask/index.html
new file mode 100644
index 0000000..5e83f91
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-datadog-nar/1.16.3/org.apache.nifi.reporting.datadog.DataDogReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DataDogReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DataDogReportingTask</h1><h2>Description: </h2><p>Publishes metrics from NiFi to datadog. Fo [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.DBCPConnectionPool/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.DBCPConnectionPool/index.html
new file mode 100644
index 0000000..0980dd5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.DBCPConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DBCPConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DBCPConnectionPool</h1><h2>Description: </h2><p>Provides Database Connection Pooling Service.  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.DBCPConnectionPoolLookup/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.DBCPConnectionPoolLookup/index.html
new file mode 100644
index 0000000..61d6b92
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.DBCPConnectionPoolLookup/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DBCPConnectionPoolLookup</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DBCPConnectionPoolLookup</h1><h2>Description: </h2><p>Provides a DBCPService that can be [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.HikariCPConnectionPool/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.HikariCPConnectionPool/index.html
new file mode 100644
index 0000000..bfab917
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.HikariCPConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HikariCPConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HikariCPConnectionPool</h1><h2>Description: </h2><p>Provides Database Connection Pooling S [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.record.sink.db.DatabaseRecordSink/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.record.sink.db.DatabaseRecordSink/index.html
new file mode 100644
index 0000000..dc57eb1
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.16.3/org.apache.nifi.record.sink.db.DatabaseRecordSink/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DatabaseRecordSink</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DatabaseRecordSink</h1><h2>Description: </h2><p>Provides a service to write records using a co [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService/index.html
new file mode 100644
index 0000000..fefdfbe
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedMapCacheClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedMapCacheClientService</h1><h2>Description: </h2><p>Provides the abili [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService/index.html
new file mode 100644
index 0000000..4a302ff
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedSetCacheClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedSetCacheClientService</h1><h2>Description: </h2><p>Provides the abili [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.server.DistributedSetCacheServer/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.server.DistributedSetCacheServer/index.html
new file mode 100644
index 0000000..41becba
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.server.DistributedSetCacheServer/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedSetCacheServer</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedSetCacheServer</h1><h2>Description: </h2><p>Provides a set (collection of un [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer/index.html
new file mode 100644
index 0000000..02310f9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-distributed-cache-services-nar/1.16.3/org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedMapCacheServer</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedMapCacheServer</h1><h2>Description: </h2><p>Provides a map (key/value) cache [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/index.html
new file mode 100644
index 0000000..54bc2a0
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ElasticSearchClientServiceImpl</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ElasticSearchClientServiceImpl</h1><h2>Description: </h2><p>No description provide [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchLookupService/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchLookupService/additionalDetails.html
new file mode 100644
index 0000000..3b95430
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchLookupService/additionalDetails.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ElasticSearchLookupService</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This lookup service uses ElasticSearch as its data source. Mappings in LookupRecord map record paths to paths within
+    an ElasticSearch document. Example:
+</p>
+<p>
+    <em>/user/name</em> => <em>user.contact.name</em>
+</p>
+<p>
+    That would map the record path <em>/user/name</em> to an embedded document named <em>contact</em> with a field named
+    <em>name</em>.
+</p>
+<p>
+    The query that is assembled from these is a boolean query where all of the criteria are under the <em>must</em> list.
+    In addition, wildcards are not supported right now and all criteria are translated into literal <em>match</em> queries.
+</p>
+<h2>Post-Processing</h2>
+<p>
+    Because an ElasticSearch result might be structured differently than the record which will be enriched by this service,
+    users can specify an additional set of mappings on this lookup service that map JsonPath operations to record paths. Example:
+</p>
+<p>
+    <em>$.user.contact.email</em> => <em>/user/email_address</em>
+</p>
+<p>
+    Would copy the field <em>email</em> from the embedded document <em>contact</em> into the record at that path.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchLookupService/index.html
new file mode 100644
index 0000000..b8c5102
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ElasticSearchLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ElasticSearchLookupService</h1><h2>Description: </h2><p>Lookup a record from Elasticse [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchStringLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchStringLookupService/index.html
new file mode 100644
index 0000000..e78a841
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/1.16.3/org.apache.nifi.elasticsearch.ElasticSearchStringLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ElasticSearchStringLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ElasticSearchStringLookupService</h1><h2>Description: </h2><p>Lookup a string va [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.FetchElasticsearchHttp/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.FetchElasticsearchHttp/index.html
new file mode 100644
index 0000000..67c7d69
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.FetchElasticsearchHttp/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchElasticsearchHttp</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchElasticsearchHttp</h1><h2>Deprecation notice: </h2><p>This processor is deprecated an [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchHttp/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchHttp/index.html
new file mode 100644
index 0000000..e45afa3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchHttp/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutElasticsearchHttp</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutElasticsearchHttp</h1><h2>Deprecation notice: </h2><p>This processor is deprecated and ma [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchHttpRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchHttpRecord/index.html
new file mode 100644
index 0000000..c442ef8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchHttpRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutElasticsearchHttpRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutElasticsearchHttpRecord</h1><h2>Deprecation notice: </h2><p>This processor is depre [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.QueryElasticsearchHttp/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.QueryElasticsearchHttp/index.html
new file mode 100644
index 0000000..ea06523
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.QueryElasticsearchHttp/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryElasticsearchHttp</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryElasticsearchHttp</h1><h2>Deprecation notice: </h2><p>This processor is deprecated an [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.ScrollElasticsearchHttp/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.ScrollElasticsearchHttp/index.html
new file mode 100644
index 0000000..4314f43
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-nar/1.16.3/org.apache.nifi.processors.elasticsearch.ScrollElasticsearchHttp/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ScrollElasticsearchHttp</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ScrollElasticsearchHttp</h1><h2>Deprecation notice: </h2><p>This processor is deprecated  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..05c19ad
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>DeleteByQueryElasticsearch</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <p>This processor executes a delete operation against one or more indices using the _delete_by_query handler. The
+    query should be a valid Elasticsearch JSON DSL query (Lucene syntax is not supported). An example query:</p>
+    <pre>
+        {
+            "query": {
+                "match": {
+                    "username.keyword": "john.smith"
+                }
+            }
+        }
+    </pre>
+    <p>To delete all of the contents of an index, this could be used:</p>
+    <pre>
+        {
+            "query": {
+                "match_all": {}
+            }
+        }
+    </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/index.html
new file mode 100644
index 0000000..fbcd557
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteByQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteByQueryElasticsearch</h1><h2>Description: </h2><p>Delete from an Elasticsearch i [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.GetElasticsearch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.GetElasticsearch/index.html
new file mode 100644
index 0000000..1c41e86
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.GetElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetElasticsearch</h1><h2>Description: </h2><p>Elasticsearch get processor that uses the official [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..e9330ea
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>JsonQueryElasticsearch</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+    to be able to take a JSON query (e.g. from Kibana) and execute it as-is against an Elasticsearch cluster. Like all processors in the
+    "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+    <p>The query JSON to execute can be provided either in the Query configuration property or in the content of the flowfile.
+    If the Query Attribute property is configured, the executed query JSON will be placed in the attribute provided by this property.</p>
+    <p>Additionally, search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+    will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+    separated from their parent aggregation. The following is an example query that would be accepted:</p>
+    <pre>
+        {
+            "query": {
+                "match": {
+                    "restaurant.keyword": "Local Pizzaz FTW Inc"
+                }
+            },
+            "aggs": {
+                "weekly_sales": {
+                  "date_histogram": {
+                    "field": "date",
+                    "interval": "week"
+                  },
+                  "aggs": {
+                    "items": {
+                      "terms": {
+                        "field": "product",
+                        "size": 10
+                      }
+                    }
+                  }
+                }
+            }
+        }
+    </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/index.html
new file mode 100644
index 0000000..41545f2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JsonQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JsonQueryElasticsearch</h1><h2>Description: </h2><p>A processor that allows the user to ru [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..1276325
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PaginatedJsonQueryElasticsearch</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+    to be able to take a JSON query (e.g. from Kibana) and execute it as-is against an Elasticsearch cluster in a paginated manner.
+    Like all processors in the "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+    <p>The query JSON to execute can be provided either in the Query configuration property or in the content of the flowfile.
+    If the Query Attribute property is configured, the executed query JSON will be placed in the attribute provided by this property.</p>
+    <p>The query is paginated in Elasticsearch using one of the available methods - "Scroll" or "Search After" (optionally
+    with a "Point in Time" for Elasticsearch 7.10+ with XPack enabled). The number of results per page can be controlled using
+        the <em>size</em> parameter in the Query JSON. For Search After functionality, a <em>sort</em> parameter <strong>must</strong>
+    be present within the Query JSON.</p>
+    <p>Search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+    will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+    separated from their parent aggregation. Additionally, the results from all pages can be combined into a single
+    flowfile (but the processor will only load each page of data into memory at any one time).</p>
+    <p>The following is an example query that would be accepted:</p>
+    <pre>
+        {
+            "query": {
+                "size": 10000,
+                "sort": {"product": "desc"},
+                "match": {
+                    "restaurant.keyword": "Local Pizzaz FTW Inc"
+                }
+            },
+            "aggs": {
+                "weekly_sales": {
+                  "date_histogram": {
+                    "field": "date",
+                    "interval": "week"
+                  },
+                  "aggs": {
+                    "items": {
+                      "terms": {
+                        "field": "product",
+                        "size": 10
+                      }
+                    }
+                  }
+                }
+            }
+        }
+    </pre>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/index.html
new file mode 100644
index 0000000..c8894d5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PaginatedJsonQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PaginatedJsonQueryElasticsearch</h1><h2>Description: </h2><p>A processor that all [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/additionalDetails.html
new file mode 100644
index 0000000..403cb7d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/additionalDetails.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutElasticsearchJson</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+<p>
+    This processor is for accessing the Elasticsearch Bulk API. It provides the ability to configure bulk operations on
+    a per-FlowFile basis, which is what separates it from PutElasticsearchRecord.
+</p>
+<p>
+    As part of the Elasticsearch REST API bundle, it uses a controller service to manage connection information and
+    that controller service is built on top of the official Elasticsearch client APIs. That provides features such as
+    automatic master detection against the cluster which is missing in the other bundles.
+</p>
+<p>
+    This processor builds one Elasticsearch Bulk API body per (batch of) FlowFiles. Care should be taken to batch FlowFiles
+    into appropriately-sized chunks so that NiFi does not run out of memory and the requests sent to Elasticsearch are
+    not too large for it to handle. When failures do occur, this processor is capable of attempting to route the FlowFiles
+    that failed to an errors queue so that only failed FlowFiles can be processed downstream or replayed.
+</p>
+<p>
+    The index, operation and (optional) type fields are configured with default values.
+    The ID (optional unless the operation is "index") can be set as an attribute on the FlowFile(s).
+    The following is an example of a document exercising all of these features:
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/index.html
new file mode 100644
index 0000000..95340b7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutElasticsearchJson</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutElasticsearchJson</h1><h2>Description: </h2><p>An Elasticsearch put processor that uses t [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/additionalDetails.html
new file mode 100644
index 0000000..18da9cb
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/additionalDetails.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutElasticsearchRecord</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+<p>
+    This processor is for accessing the Elasticsearch Bulk API. It provides the ability to configure bulk operations on
+    a per-record basis which is what separates it from PutElasticsearchJson. For example, it is possible to define
+    multiple commands to index documents, followed by deletes, creates and update operations against the same index or
+    other indices as desired.
+</p>
+<p>
+    As part of the Elasticsearch REST API bundle, it uses a controller service to manage connection information and
+    that controller service is built on top of the official Elasticsearch client APIs. That provides features such as
+    automatic master detection against the cluster which is missing in the other bundles.
+</p>
+<p>
+    This processor builds one Elasticsearch Bulk API body per record set. Care should be taken to split up record sets
+    into appropriately-sized chunks so that NiFi does not run out of memory and the requests sent to Elasticsearch are
+    not too large for it to handle. When failures do occur, this processor is capable of attempting to write the records
+    that failed to an output record writer so that only failed records can be processed downstream or replayed.
+</p>
+<p>
+    The index, operation and (optional) type fields are configured with default values that can be overridden using
+    record path operations that find an index or type value in the record set.
+    The ID and operation type (create, index, update, upsert or delete) can also be extracted in a similar fashion from
+    the record set.
+    An "@timestamp" field can be added to the data either using a default or by extracting it from the record set.
+    This is useful if the documents are being indexed into an Elasticsearch Data Stream.
+    The following is an example of a document exercising all of these features:
+</p>
+<pre>
+    {
+        "metadata": {
+            "id": "12345",
+            "index": "test",
+            "type": "message",
+            "operation": "index"
+        },
+        "message": "Hello, world",
+        "from": "john.smith",
+        "ts": "2021-12-03'T'14:00:00.000Z"
+    }
+</pre>
+<pre>
+    {
+        "metadata": {
+            "id": "12345",
+            "index": "test",
+            "type": "message",
+            "operation": "delete"
+        }
+    }
+</pre>
+<p>The record path operations below would extract the relevant data:</p>
+<ul>
+    <li>/metadata/id</li>
+    <li>/metadata/index</li>
+    <li>metadata/type</li>
+    <li>metadata/operation</li>
+    <li>/ts</li>
+</ul>
+<p>Valid values for "operation" are:</p>
+<ul>
+    <li>create</li>
+    <li>delete</li>
+    <li>index</li>
+    <li>update</li>
+    <li>upsert</li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/index.html
new file mode 100644
index 0000000..0c41f2f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutElasticsearchRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutElasticsearchRecord</h1><h2>Description: </h2><p>A record-aware Elasticsearch put proce [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..d4a0530
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/additionalDetails.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>SearchElasticsearch</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+    to be able to take a JSON query (e.g. from Kibana) and execute it as-is against an Elasticsearch cluster in a paginated manner.
+    Like all processors in the "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+    <p>The query to execute must be provided in the Query configuration property.</p>
+    <p>The query is paginated in Elasticsearch using one of the available methods - "Scroll" or "Search After" (optionally
+    with a "Point in Time" for Elasticsearch 7.10+ with XPack enabled). The number of results per page can be controlled using
+    the <em>size</em> parameter in the Query JSON. For Search After functionality, a <em>sort</em> parameter <strong>must</strong>
+    be present within the Query JSON.</p>
+    <p>Search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+    will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+    separated from their parent aggregation. Additionally, the results from all pages can be combined into a single
+    flowfile (but the processor will only load each page of data into memory at any one time).</p>
+    <p>The following is an example query that would be accepted:</p>
+    <pre>
+        {
+            "query": {
+                "size": 10000,
+                "sort": {"product": "desc"},
+                "match": {
+                    "restaurant.keyword": "Local Pizzaz FTW Inc"
+                }
+            },
+            "aggs": {
+                "weekly_sales": {
+                  "date_histogram": {
+                    "field": "date",
+                    "interval": "week"
+                  },
+                  "aggs": {
+                    "items": {
+                      "terms": {
+                        "field": "product",
+                        "size": 10
+                      }
+                    }
+                  }
+                }
+            }
+        }
+    </pre>
+    <p>This processor runs on a schedule in order to execute the same query repeatedly. Once a paginated query has been
+    initiated within Elasticsearch, this processor will continue to retrieve results for that same query until no
+    further results are available. After that point, a new paginated query will be initiated using the same Query JSON.
+    This processor does not attempt to de-duplicate results between queries, for example if the same query runs twice
+    and (some or all of) the results are identical, the output will contain these same results for both invocations.</p>
+    <p>If the results are "Combined" from this processor, then the paginated query will run continually within a
+    single invocation until no more results are available (then the processor will start a new paginated query upon its
+    next invocation). If the results are "Split" or "Per Page", then each invocation of this processor will retrieve the
+    next page of results until either there are no more results or the paginated query expires within Elasticsearch.</p>
+    <p>Local State is used to track the progress of a paginated query within this processor. If there is need to restart
+    the query completely or change the processor configuration after a paginated query has already been started,
+    be sure to "Clear State" of the processor once it has been stopped and before restarting.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/index.html
new file mode 100644
index 0000000..71d5649
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SearchElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SearchElasticsearch</h1><h2>Description: </h2><p>A processor that allows the user to repeated [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..f747a30
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>UpdateByQueryElasticsearch</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <p>This processor executes an update operation against one or more indices using the _update_by_query handler. The
+    query should be a valid Elasticsearch JSON DSL query (Lucene syntax is not supported). An optional Elasticsearch
+    script can be specified to execute against the matched documents. An example query with script:</p>
+    <pre>
+        {
+            "script": {
+                "source": "ctx._source.count++",
+                "lang": "painless"
+            },
+            "query": {
+                "match": {
+                    "username.keyword": "john.smith"
+                }
+            }
+        }
+    </pre>
+    <p>To update all of the contents of an index, this could be used:</p>
+    <pre>
+        {
+            "query": {
+                "match_all": {}
+            }
+        }
+    </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/index.html
new file mode 100644
index 0000000..67ba009
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/1.16.3/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>UpdateByQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">UpdateByQueryElasticsearch</h1><h2>Description: </h2><p>Update documents in an Elastic [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeEWS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeEWS/index.html
new file mode 100644
index 0000000..0b43def
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeEWS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeEWS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeEWS</h1><h2>Description: </h2><p>Consumes messages from Microsoft Exchange using Exchange Web S [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeIMAP/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeIMAP/additionalDetails.html
new file mode 100644
index 0000000..93f09f6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeIMAP/additionalDetails.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+<head>
+<meta charset="utf-8" />
+<title>ConsumeIMAP</title>
+<link rel="stylesheet" href="../../../../../css/component-usage.css"
+	type="text/css" />
+</head>
+
+<body>
+	<!-- Processor Documentation ================================================== -->
+	<h2>Description:</h2>
+	<p>This Processor consumes email messages via IMAP protocol and sends the content of an email message as content of the Flow File. 
+	   Content of the incoming email message is written as raw bytes to the content of the outgoing Flow File.
+    </p>
+
+	<p>Different email providers may require additional Java Mail properties which could be provided as dynamic properties.
+       For example, below is a sample configuration for GMail:
+
+	</p>
+	<p>
+		<b>Processor's static properties:</b>
+		<ul>
+			<li><b>Host Name</b> - imap.gmail.com</li>
+			<li><b>Port</b> - 993</li>
+			<li><b>User Name</b> - <i>[your user name]</i></li>
+			<li><b>Password</b> - <i>[your password]</i></li>
+			<li><b>Folder</b> - INBOX</li>
+		</ul>
+		<b>Processor's dynamic properties:</b>
+		<ul>
+			<li><b>mail.imap.socketFactory.class</b> - javax.net.ssl.SSLSocketFactory</li>
+			<li><b>mail.imap.socketFactory.fallback</b> - false</li>
+			<li><b>mail.store.protocol</b> - imaps</li>
+		</ul>
+	</p>
+	<p>
+	Another useful property is <b>mail.debug</b> which allows Java Mail API to print protocol messages to the console helping you to both understand what's going on as well as debug issues.
+	</p>
+	<p>
+	For the full list of available Java Mail properties please refer to <a href="http://connector.sourceforge.net/doc-files/Properties.html">here</a>
+	</p>
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeIMAP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeIMAP/index.html
new file mode 100644
index 0000000..9a9ab36
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumeIMAP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeIMAP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeIMAP</h1><h2>Description: </h2><p>Consumes messages from Email Server using IMAP protocol. The [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumePOP3/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumePOP3/additionalDetails.html
new file mode 100644
index 0000000..f16557e
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumePOP3/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+<head>
+<meta charset="utf-8" />
+<title>ConsumePOP3</title>
+<link rel="stylesheet" href="../../../../../css/component-usage.css"
+	type="text/css" />
+</head>
+
+<body>
+	<!-- Processor Documentation ================================================== -->
+	<h2>Description:</h2>
+	<p>This Processor consumes email messages via POP3 protocol and sends the content of an email message as content of the Flow File. 
+	   Content of the incoming email message is written as raw bytes to the content of the outgoing Flow File.
+    </p>
+
+	<p>Since different serves may require different Java Mail
+		properties such properties could be provided via dynamic properties.
+		For example, below is a sample configuration for GMail:
+	</p>
+	<p>
+		<b>Processor's static properties:</b>
+		<ul>
+			<li><b>Host Name</b> - pop.gmail.com</li>
+			<li><b>Port</b> - 995</li>
+			<li><b>User Name</b> - <i>[your user name]</i></li>
+			<li><b>Password</b> - <i>[your password]</i></li>
+			<li><b>Folder</b> - INBOX</li>
+		</ul>
+		<b>Processor's dynamic properties:</b>
+		<ul>
+			<li><b>mail.pop3.socketFactory.class</b> - javax.net.ssl.SSLSocketFactory</li>
+			<li><b>mail.pop3.socketFactory.fallback</b> - false</li>
+		</ul>
+	</p>
+	<p>
+	Another useful property is	<b>mail.debug</b> which allows Java Mail API to print protocol messages to the console helping you to both understand what's going on as well as debug issues.
+	</p>
+	<p>
+	For the full list of available Java Mail properties please refer to <a href="http://connector.sourceforge.net/doc-files/Properties.html">here</a>
+	</p>
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumePOP3/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumePOP3/index.html
new file mode 100644
index 0000000..307c58b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ConsumePOP3/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumePOP3</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumePOP3</h1><h2>Description: </h2><p>Consumes messages from Email Server using POP3 protocol. The [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractEmailAttachments/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractEmailAttachments/index.html
new file mode 100644
index 0000000..d88be9c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractEmailAttachments/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractEmailAttachments</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractEmailAttachments</h1><h2>Description: </h2><p>Extract attachments from a mime form [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractEmailHeaders/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractEmailHeaders/index.html
new file mode 100644
index 0000000..d91200d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractEmailHeaders/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractEmailHeaders</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractEmailHeaders</h1><h2>Description: </h2><p>Using the flowfile content as source of data [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractTNEFAttachments/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractTNEFAttachments/index.html
new file mode 100644
index 0000000..fd49cac
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ExtractTNEFAttachments/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractTNEFAttachments</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractTNEFAttachments</h1><h2>Description: </h2><p>Extract attachments from a mime format [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ListenSMTP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ListenSMTP/index.html
new file mode 100644
index 0000000..49b3c88
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-email-nar/1.16.3/org.apache.nifi.processors.email.ListenSMTP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListenSMTP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListenSMTP</h1><h2>Description: </h2><p>This processor implements a lightweight SMTP server to an arbi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.GeoEnrichIP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.GeoEnrichIP/index.html
new file mode 100644
index 0000000..ff8a271
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.GeoEnrichIP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GeoEnrichIP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GeoEnrichIP</h1><h2>Description: </h2><p>Looks up geolocation information for an IP address and adds  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.GeoEnrichIPRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.GeoEnrichIPRecord/index.html
new file mode 100644
index 0000000..98f97ae
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.GeoEnrichIPRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GeoEnrichIPRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GeoEnrichIPRecord</h1><h2>Description: </h2><p>Looks up geolocation information for an IP addre [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.ISPEnrichIP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.ISPEnrichIP/index.html
new file mode 100644
index 0000000..d751a39
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.ISPEnrichIP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ISPEnrichIP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ISPEnrichIP</h1><h2>Description: </h2><p>Looks up ISP information for an IP address and adds the info [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.enrich.QueryDNS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.enrich.QueryDNS/index.html
new file mode 100644
index 0000000..a43e901
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.enrich.QueryDNS/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryDNS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryDNS</h1><h2>Description: </h2><p>A powerful DNS query processor primary designed to enrich DataFlow [...]
+NOTE: This is a multiline regular expression, therefore, the DFM should decide how to handle trailing new line characters.</td></tr><tr><td id="name"><strong>DNS Query Retries</strong></td><td id="default-value">1</td><td id="allowable-values"></td><td id="description">The number of attempts before giving up and moving on</td></tr><tr><td id="name"><strong>DNS Query Timeout</strong></td><td id="default-value">1500 ms</td><td id="allowable-values"></td><td id="description">The amount of t [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.enrich.QueryWhois/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.enrich.QueryWhois/index.html
new file mode 100644
index 0000000..98231ae
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-enrich-nar/1.16.3/org.apache.nifi.processors.enrich.QueryWhois/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryWhois</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryWhois</h1><h2>Description: </h2><p>A powerful whois query processor primary designed to enrich Da [...]
+NOTE: This is a multiline regular expression, therefore, the DFM should decide how to handle trailing new line characters.</td></tr><tr><td id="name">Key lookup group (multiline / batch)</td><td></td><td id="allowable-values"></td><td id="description">When performing a batched lookup, the following RegEx numbered capture group or Column number will be used to match the whois server response with the lookup field</td></tr></table><h3>Relationships: </h3><table id="relationships"><tr><th>N [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-evtx-nar/1.16.3/org.apache.nifi.processors.evtx.ParseEvtx/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-evtx-nar/1.16.3/org.apache.nifi.processors.evtx.ParseEvtx/additionalDetails.html
new file mode 100644
index 0000000..454cdb9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-evtx-nar/1.16.3/org.apache.nifi.processors.evtx.ParseEvtx/additionalDetails.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ParseEvtx</title>
+
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <!-- Processor Documentation ================================================== -->
+        <h2>Description:</h2>
+        <p>This processor is used to parse Windows event logs in the binary evtx format. The input flow files' content should be evtx files.  The processor has 4 outputs:
+            <ul>
+              <li>The original unmodified FlowFile</li>
+              <li>The XML resulting from parsing at the configured granularity</li>
+              <li>Failed parsing with partial output</li>
+              <li>Malformed chunk in binary form</li>
+            </ul>
+         </p>
+         <h2>Output XML Example:</h2>
+         <p>
+             <pre>
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;Events&gt;
+  &lt;Event xmlns=&quot;http://schemas.microsoft.com/win/2004/08/events/event&quot;&gt;
+    &lt;System&gt;
+      &lt;Provider Name=&quot;Service Control Manager&quot; Guid=&quot;{555908d1-a6d7-4695-8e1e-26931d2012f4}&quot; Ev
+entSourceName=&quot;Service Control Manager&quot;/&gt;
+      &lt;EventID Qualifiers=&quot;16384&quot;&gt;7036&lt;/EventID&gt;
+      &lt;Version&gt;0&lt;/Version&gt;
+      &lt;Level&gt;4&lt;/Level&gt;
+      &lt;Task&gt;0&lt;/Task&gt;
+      &lt;Opcode&gt;0&lt;/Opcode&gt;
+      &lt;Keywords&gt;0x8080000000000000&lt;/Keywords&gt;
+      &lt;TimeCreated SystemTime=&quot;2016-01-08 16:49:47.518&quot;/&gt;
+      &lt;EventRecordID&gt;780&lt;/EventRecordID&gt;
+      &lt;Correlation ActivityID=&quot;&quot; RelatedActivityID=&quot;&quot;/&gt;
+      &lt;Execution ProcessID=&quot;480&quot; ThreadID=&quot;596&quot;/&gt;
+      &lt;Channel&gt;System&lt;/Channel&gt;
+      &lt;Computer&gt;win7-pro-vm&lt;/Computer&gt;
+      &lt;Security UserID=&quot;&quot;/&gt;
+    &lt;/System&gt;
+    &lt;EventData&gt;
+      &lt;Data Name=&quot;param1&quot;&gt;Workstation&lt;/Data&gt;
+      &lt;Data Name=&quot;param2&quot;&gt;running&lt;/Data&gt;
+      &lt;Binary&gt;TABhAG4AbQBhAG4AVwBvAHIAawBzAHQAYQB0AGkAbwBuAC8ANAAAAA==&lt;/Binary&gt;
+    &lt;/EventData&gt;
+  &lt;/Event&gt;
+  &lt;Event xmlns=&quot;http://schemas.microsoft.com/win/2004/08/events/event&quot;&gt;
+    &lt;System&gt;
+      &lt;Provider Name=&quot;Service Control Manager&quot; Guid=&quot;{555908d1-a6d7-4695-8e1e-26931d2012f4}&quot; EventSourceName=&quot;Service Control Manager&quot;/&gt;
+      &lt;EventID Qualifiers=&quot;16384&quot;&gt;7036&lt;/EventID&gt;
+      &lt;Version&gt;0&lt;/Version&gt;
+      &lt;Level&gt;4&lt;/Level&gt;
+      &lt;Task&gt;0&lt;/Task&gt;
+      &lt;Opcode&gt;0&lt;/Opcode&gt;
+      &lt;Keywords&gt;0x8080000000000000&lt;/Keywords&gt;
+      &lt;TimeCreated SystemTime=&quot;2016-01-08 16:49:47.535&quot;/&gt;
+      &lt;EventRecordID&gt;781&lt;/EventRecordID&gt;
+      &lt;Correlation ActivityID=&quot;&quot; RelatedActivityID=&quot;&quot;/&gt;
+      &lt;Execution ProcessID=&quot;480&quot; ThreadID=&quot;576&quot;/&gt;
+      &lt;Channel&gt;System&lt;/Channel&gt;
+      &lt;Computer&gt;win7-pro-vm&lt;/Computer&gt;
+      &lt;Security UserID=&quot;&quot;/&gt;
+    &lt;/System&gt;
+    &lt;EventData&gt;
+      &lt;Data Name=&quot;param1&quot;&gt;Cryptographic Services&lt;/Data&gt;
+      &lt;Data Name=&quot;param2&quot;&gt;running&lt;/Data&gt;
+      &lt;Binary&gt;QwByAHkAcAB0AFMAdgBjAC8ANAAAAA==&lt;/Binary&gt;
+    &lt;/EventData&gt;
+  &lt;/Event&gt;
+&lt;/Events&gt;
+             </pre>
+        </p>
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-evtx-nar/1.16.3/org.apache.nifi.processors.evtx.ParseEvtx/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-evtx-nar/1.16.3/org.apache.nifi.processors.evtx.ParseEvtx/index.html
new file mode 100644
index 0000000..db46b4d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-evtx-nar/1.16.3/org.apache.nifi.processors.evtx.ParseEvtx/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ParseEvtx</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ParseEvtx</h1><h2>Description: </h2><p>Parses the contents of a Windows Event Log file (evtx) and write [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.bigquery.PutBigQueryBatch/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.bigquery.PutBigQueryBatch/index.html
new file mode 100644
index 0000000..4c55bb2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.bigquery.PutBigQueryBatch/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutBigQueryBatch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutBigQueryBatch</h1><h2>Description: </h2><p>Batch loads flow files content to a Google BigQuer [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Proxy port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td></td><td id="allowable-values"></td><td id="description">HTTP Pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.bigquery.PutBigQueryStreaming/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.bigquery.PutBigQueryStreaming/index.html
new file mode 100644
index 0000000..1642635
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.bigquery.PutBigQueryStreaming/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutBigQueryStreaming</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutBigQueryStreaming</h1><h2>Description: </h2><p>Load data into Google BigQuery table using [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Proxy port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td></td><td id="allowable-values"></td><td id="description">HTTP Pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService/index.html
new file mode 100644
index 0000000..d795af4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GCPCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GCPCredentialsControllerService</h1><h2>Description: </h2><p>Defines credentials  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub/index.html
new file mode 100644
index 0000000..c2606eb
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeGCPubSub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeGCPubSub</h1><h2>Description: </h2><p>Consumes message from the configured Google Cloud Pu [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub/index.html
new file mode 100644
index 0000000..2bd4cdb
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishGCPubSub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishGCPubSub</h1><h2>Description: </h2><p>Publishes the content of the incoming flowfile to th [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.lite.ConsumeGCPubSubLite/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.lite.ConsumeGCPubSubLite/index.html
new file mode 100644
index 0000000..4ddf00c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.lite.ConsumeGCPubSubLite/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeGCPubSubLite</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeGCPubSubLite</h1><h2>Description: </h2><p>Consumes message from the configured Google  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.lite.PublishGCPubSubLite/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.lite.PublishGCPubSubLite/index.html
new file mode 100644
index 0000000..055305d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.pubsub.lite.PublishGCPubSubLite/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishGCPubSubLite</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishGCPubSubLite</h1><h2>Description: </h2><p>Publishes the content of the incoming flowfi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.DeleteGCSObject/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.DeleteGCSObject/index.html
new file mode 100644
index 0000000..47fe2b9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.DeleteGCSObject/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteGCSObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteGCSObject</h1><h2>Description: </h2><p>Deletes objects from a Google Cloud Bucket. If attem [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Proxy port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td></td><td id="allowable-values"></td><td id="description">HTTP Pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.FetchGCSObject/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.FetchGCSObject/index.html
new file mode 100644
index 0000000..9316afe
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.FetchGCSObject/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchGCSObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchGCSObject</h1><h2>Description: </h2><p>Fetches a file from a Google Cloud Bucket. Designed to [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Proxy port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td></td><td id="allowable-values"></td><td id="description">HTTP Pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.ListGCSBucket/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.ListGCSBucket/additionalDetails.html
new file mode 100644
index 0000000..27aa2af
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.ListGCSBucket/additionalDetails.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+
+<head>
+    <meta charset="utf-8"/>
+    <title>ListGCSBucket</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batch Processing</h1>
+
+<p>
+    ListGCSBucket performs a listing of all GCS Objects that it encounters in the configured GCS bucket.
+    There are two common, broadly defined use cases.
+</p>
+
+<h3>Streaming Use Case</h3>
+
+<p>
+    By default, the Processor will create a separate FlowFile for each object in the bucket and add attributes for filename, bucket, etc.
+    A common use case is to connect ListGCSBucket to the FetchGCSObject processor. These two processors used in conjunction with one another provide the ability to
+    easily monitor a bucket and fetch the contents of any new object as it lands in GCS in an efficient streaming fashion.
+</p>
+
+<h3>Batch Use Case</h3>
+<p>
+    Another common use case is the desire to process all newly arriving objects in a given bucket, and to then perform some action
+    only when all objects have completed their processing. The above approach of streaming the data makes this difficult, because NiFi is inherently
+    a streaming platform in that there is no "job" that has a beginning and an end. Data is simply picked up as it becomes available.
+</p>
+
+<p>
+    To solve this, the ListGCSBucket Processor can optionally be configured with a Record Writer. When a Record Writer is configured, a single
+    FlowFile will be created that will contain a Record for each object in the bucket, instead of a separate FlowFile per object.
+    See the documentation for ListFile for an example of how to build a dataflow that allows for processing all of the objects before proceeding
+    with any other step.
+</p>
+
+<p>
+    One important difference between the data produced by ListFile and ListGCSBucket, though, is the structure of the Records that are emitted. The Records
+    emitted by ListFile have a different schema than those emitted by ListGCSBucket. ListGCSBucket emits records that follow the following schema (in Avro format):
+</p>
+
+<code>
+    <pre>
+{
+  "type": "record",
+  "name": "nifiRecord",
+  "namespace": "org.apache.nifi",
+  "fields": [{
+    "name": "bucket",
+    "type": "string"
+  }, {
+    "name": "name",
+    "type": "string"
+  }, {
+    "name": "size",
+    "type": ["null", "long"]
+  }, {
+    "name": "cacheControl",
+    "type": ["null", "string"]
+  }, {
+    "name": "componentCount",
+    "type": ["null", "int"]
+  }, {
+    "name": "contentDisposition",
+    "type": ["null", "long"]
+  }, {
+    "name": "contentEncoding",
+    "type": ["null", "string"]
+  }, {
+    "name": "contentLanguage",
+    "type": ["null", "string"]
+  }, {
+    "name": "crc32c",
+    "type": ["null", "string"]
+  }, {
+    "name": "createTime",
+    "type": ["null", {
+      "type": "long",
+      "logicalType": "timestamp-millis"
+    }]
+  }, {
+    "name": "updateTime",
+    "type": ["null", {
+      "type": "long",
+      "logicalType": "timestamp-millis"
+    }]
+  }, {
+    "name": "encryptionAlgorithm",
+    "type": ["null", "string"]
+  }, {
+    "name": "encryptionKeySha256",
+    "type": ["null", "string"]
+  }, {
+    "name": "etag",
+    "type": ["null", "string"]
+  }, {
+    "name": "generatedId",
+    "type": ["null", "string"]
+  }, {
+    "name": "generation",
+    "type": ["null", "long"]
+  }, {
+    "name": "md5",
+    "type": ["null", "string"]
+  }, {
+    "name": "mediaLink",
+    "type": ["null", "string"]
+  }, {
+    "name": "metageneration",
+    "type": ["null", "long"]
+  }, {
+    "name": "owner",
+    "type": ["null", "string"]
+  }, {
+    "name": "ownerType",
+    "type": ["null", "string"]
+  }, {
+    "name": "uri",
+    "type": ["null", "string"]
+  }]
+}
+    </pre>
+</code>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.ListGCSBucket/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.ListGCSBucket/index.html
new file mode 100644
index 0000000..ae49aff
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.ListGCSBucket/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListGCSBucket</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListGCSBucket</h1><h2>Description: </h2><p>Retrieves a listing of objects from an GCS bucket. For e [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Proxy port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td></td><td id="allowable-values"></td><td id="description">HTTP Pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.PutGCSObject/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.PutGCSObject/index.html
new file mode 100644
index 0000000..6286097
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-gcp-nar/1.16.3/org.apache.nifi.processors.gcp.storage.PutGCSObject/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutGCSObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutGCSObject</h1><h2>Description: </h2><p>Puts flow files to a Google Cloud Bucket.</p><h3>Tags: </h [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Proxy port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td></td><td id="allowable-values"></td><td id="description">HTTP Pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-geohash-nar/1.16.3/org.apache.nifi.processors.geohash.GeohashRecord/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-geohash-nar/1.16.3/org.apache.nifi.processors.geohash.GeohashRecord/additionalDetails.html
new file mode 100644
index 0000000..410e7d2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-geohash-nar/1.16.3/org.apache.nifi.processors.geohash.GeohashRecord/additionalDetails.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8"/>
+    <title>GeohashRecord</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+
+<body>
+<h1>Overview</h1>
+<p>
+    A Geohash value corresponds to a specific area with pre-defined granularity and is widely used in identifying,
+    representing and indexing geospatial objects.
+    This GeohashRecord processor provides the ability to encode and decode Geohashes with desired format and precision.
+</p>
+<h3>Formats supported</h3>
+<p>
+<ul>
+    <li>BASE32: The most commonly used alphanumeric version. It is compact and more human-readable by discarding
+        some letters(such as "a" and "o", "i" and "l") that might cause confusion.
+    </li>
+    <li>BINARY: This format is generated by directly interleaving latitude and longitude binary strings.
+        The even bits in the binary strings correspond to the longitude, while the odd digits correspond to the latitude.
+    </li>
+    <li>LONG: Although this 64-bit number format is not human-readable, it can be calculated very fast and is
+        more efficient.
+    </li>
+</ul>
+</p>
+<h3>Precision supported</h3>
+
+<p>
+    In <b>ENCODE</b> mode, users specify the desired precision level, which should be an integer number between 1 and
+    12. A greater level will generate a longer Geohash with higher precision.
+</p>
+<p>
+    In DECODE mode, users are not asked to provide a precision level because this information is contained in the length
+    of Geohash values given.
+</p>
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-geohash-nar/1.16.3/org.apache.nifi.processors.geohash.GeohashRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-geohash-nar/1.16.3/org.apache.nifi.processors.geohash.GeohashRecord/index.html
new file mode 100644
index 0000000..5227f6e
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-geohash-nar/1.16.3/org.apache.nifi.processors.geohash.GeohashRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GeohashRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GeohashRecord</h1><h2>Description: </h2><p>A record-based processor that encodes and decodes Geohas [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL.gif b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL.gif
new file mode 100644
index 0000000..49e5388
Binary files /dev/null and b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL.gif differ
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL2.gif b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL2.gif
new file mode 100644
index 0000000..602c260
Binary files /dev/null and b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL2.gif differ
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/additionalDetails.html
new file mode 100644
index 0000000..98bd171
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/additionalDetails.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>Groovy</title>
+    <!--link rel="stylesheet" href="../../css/component-usage.css" type="text/css" /-->
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>This is a grooviest groovy script :)</p>
+<h2>Script Bindings:</h2>
+<table>
+<tr><th>variable</th><th>type</th><th>description</th></tr>
+<tr>
+	<td>session</td>
+	<td>org.apache.nifi.processor.ProcessSession</td>
+	<td>the session that is used to get, change, and transfer input files</td>
+</tr>
+<tr>
+	<td>context</td>
+	<td>org.apache.nifi.processor.ProcessContext</td>
+	<td>the context (almost unuseful)</td>
+</tr>
+<tr>
+	<td>log</td>
+	<td>org.apache.nifi.logging.ComponentLog</td>
+	<td>the logger for this processor instance</td>
+</tr>
+<tr>
+	<td>REL_SUCCESS</td>
+	<td>org.apache.nifi.processor.Relationship</td>
+	<td>the success relationship</td>
+</tr>
+<tr>
+	<td>REL_FAILURE</td>
+	<td>org.apache.nifi.processor.Relationship</td>
+	<td>the failure relationship</td>
+</tr>
+<tr>
+	<td>CTL</td>
+	<td>java.util.HashMap&lt;String,<a href="https://github.com/apache/nifi/blob/main/nifi-api/src/main/java/org/apache/nifi/controller/ControllerService.java">ControllerService</a>&gt;</td>
+	<td>Map populated with controller services defined with `CTL.*` processor properties.
+	<br/>The `CTL.` prefixed properties could be linked to controller service and provides access to this service from a script without additional code.</td>
+</tr>
+<tr>
+	<td>SQL</td>
+	<td>java.util.HashMap&lt;String, <a href="http://docs.groovy-lang.org/latest/html/api/groovy/sql/Sql.html">groovy.sql.Sql</a>&gt;</td>
+	<td>Map populated with `groovy.sql.Sql` objects connected to corresponding database defined with `SQL.*` processor properties. 
+	<br/>The `SQL.` prefixed properties could be linked only to DBCPSercice.</td>
+</tr>
+<tr>
+    <td>RecordReader</td>
+    <td>java.util.HashMap&lt;String,<a href="https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-service-api/src/main/java/org/apache/nifi/serialization/RecordReaderFactory.java">RecordReaderFactory</a>&gt;</td>
+    <td>Map populated with controller services defined with `RecordReader.*` processor properties.
+        <br/>The `RecordReader.` prefixed properties are to be linked to RecordReaderFactory controller service instances.</td>
+</tr>
+<tr>
+    <td>RecordWriter</td>
+    <td>java.util.HashMap&lt;String,<a href="https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-service-api/src/main/java/org/apache/nifi/serialization/RecordSetWriterFactory.java">RecordSetWriterFactory</a>&gt;</td>
+    <td>Map populated with controller services defined with `RecordWriter.*` processor properties.
+        <br/>The `RecordWriter.` prefixed properties are to be linked to RecordSetWriterFactory controller service instances.</td>
+</tr>
+<tr>
+	<td>Dynamic processor properties</td>
+	<td>org.apache.nifi.components.PropertyDescriptor</td>
+	<td>All processor properties not started with `CTL.` or `SQL.` are bound to script variables</td>
+</tr>
+</table>
+
+<h2>SQL map details</h2>
+<p>
+<b>Example:</b> if you defined property <code>`SQL.mydb`</code> and linked it to any DBCPService, 
+then you can access it from code <code>SQL.mydb.rows('select * from mytable')</code><br/>
+
+<br/>The processor automatically takes connection from dbcp service before executing script and tries to handle transaction:
+<br/> database transactions automatically rolled back on script exception and committed on success.
+<br/>Or you can manage transaction manually.
+<br/>NOTE: Script must not disconnect connection.
+
+<br/><img src="SQL.gif"/>
+<br/><img src="SQL2.gif"/>
+</p>
+
+<h2>SessionFile - flow file extension</h2>
+<p>
+  The (org.apache.nifi.processors.groovyx.flow.SessionFile) is an actual object returned by session in Extended Groovy processor.<br/>
+  This flow file is a container that references session and the real flow file.<br/>
+  This allows to use simplified syntax to work with file attributes and content:
+</p>
+<p><i>set new attribute value</i></p>
+<pre>
+  flowFile.ATTRIBUTE_NAME = ATTRIBUTE_VALUE 
+  flowFile.'mime.type' = 'text/xml' 
+  flowFile.putAttribute("ATTRIBUTE_NAME", ATTRIBUTE_VALUE)
+  //the same as
+  flowFile = session.putAttribute(flowFile, "ATTRIBUTE_NAME", ATTRIBUTE_VALUE)
+</pre>
+  
+<p><i>remove attribute</i></p>
+<pre>
+  flowFile.ATTRIBUTE_NAME = null
+  //equals to
+  flowFile = session.removeAttribute(flowFile, "ATTRIBUTE_NAME")
+</pre>
+
+<p><i>get attribute value</i></p>
+<pre>
+  String a = flowFile.ATTRIBUTE_NAME
+</pre>
+  
+<p><i>write content</i></p>
+<pre>
+  flowFile.write("UTF-8", "THE CharSequence to write into flow file replacing current content")
+  flowFile.write("UTF-8"){writer-> 
+    do something with java.io.Writer...
+  }
+  flowFile.write{outStream-> 
+    do something with output stream...
+  }
+  flowFile.write{inStream, outStream-> 
+    do something with input and output streams... 
+  }
+</pre>
+
+<p><i>get content</i></p>
+<pre>
+  InputStream i = flowFile.read()
+  def json = new groovy.json.JsonSlurper().parse( flowFile.read() )
+  String text = flowFile.read().getText("UTF-8")
+</pre>
+  
+<p><i>transfer flow file to success relation</i></p>
+<pre>
+  REL_SUCCESS << flowFile 
+  flowFile.transfer(REL_SUCCESS)
+  //the same as:
+  session.transfer(flowFile, REL_SUCCESS)
+</pre>
+
+<p><i>work with dbcp</i></p>
+<pre>
+  import groovy.sql.Sql
+
+  //define property named `SQL.db` connected to a DBCPConnectionPool controller service
+  //for this case it's an H2 database example
+  
+  //read value from the database with prepared statement 
+  //and assign into flowfile attribute `db.yesterday`
+  def daysAdd = -1
+  def row = SQL.db.firstRow("select dateadd('DAY', ${daysAdd}, sysdate) as DB_DATE from dual")
+  flowFile.'db.yesterday' = row.DB_DATE
+
+  //to work with BLOBs and CLOBs in the database 
+  //use parameter casting using groovy.sql.Sql.BLOB(Stream) and groovy.sql.Sql.CLOB(Reader)
+  
+  //write content of the flow file into database blob
+  flowFile.read{ rawIn->
+    def parms = [
+      p_id   : flowFile.ID as Long, //get flow file attribute named `ID`
+      p_data : Sql.BLOB( rawIn ),   //use input stream as BLOB sql parameter
+    ]
+    SQL.db.executeUpdate(parms, "update mytable set data = :p_data where id = :p_id")
+  }
+</pre>
+
+
+<h2>Handling processor start &amp; stop</h2>
+
+<p>In the extended groovy processor you can catch `start` and `stop` and `unscheduled` events by providing corresponding static methods:</p>
+<pre>
+  import org.apache.nifi.processor.ProcessContext
+  import java.util.concurrent.atomic.AtomicLong
+
+  class Const{
+    static Date startTime = null;
+    static AtomicLong triggerCount = null;
+  }
+
+  static onStart(ProcessContext context){
+    Const.startTime = new Date()
+    Const.triggerCount = new AtomicLong(0)
+    println "onStart $context ${Const.startTime}"
+  }
+
+  static onStop(ProcessContext context){
+    def alive = (System.currentTimeMillis() - Const.startTime.getTime()) / 1000
+    println "onStop $context executed ${ Const.triggerCount } times during ${ alive } seconds"
+  }
+
+  static onUnscheduled(ProcessContext context){
+    def alive = (System.currentTimeMillis() - Const.startTime.getTime()) / 1000
+    println "onUnscheduled $context executed ${ Const.triggerCount } times during ${ alive } seconds"
+  }
+
+  flowFile.'trigger.count' = Const.triggerCount.incrementAndGet()
+  REL_SUCCESS << flowFile
+</pre>
+<br/>
+<br/>
+<br/>
+<br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/index.html
new file mode 100644
index 0000000..000fecf
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-groovyx-nar/1.16.3/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExecuteGroovyScript</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExecuteGroovyScript</h1><h2>Description: </h2><p>Experimental Extended Groovy script processo [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-grpc-nar/1.16.3/org.apache.nifi.processors.grpc.InvokeGRPC/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-grpc-nar/1.16.3/org.apache.nifi.processors.grpc.InvokeGRPC/index.html
new file mode 100644
index 0000000..725b744
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-grpc-nar/1.16.3/org.apache.nifi.processors.grpc.InvokeGRPC/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>InvokeGRPC</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">InvokeGRPC</h1><h2>Description: </h2><p>Sends FlowFiles, optionally with content, to a configurable re [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-grpc-nar/1.16.3/org.apache.nifi.processors.grpc.ListenGRPC/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-grpc-nar/1.16.3/org.apache.nifi.processors.grpc.ListenGRPC/index.html
new file mode 100644
index 0000000..bea15d2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-grpc-nar/1.16.3/org.apache.nifi.processors.grpc.ListenGRPC/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListenGRPC</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListenGRPC</h1><h2>Description: </h2><p>Starts a gRPC server and listens on the given port to transfor [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.HadoopDBCPConnectionPool/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.HadoopDBCPConnectionPool/index.html
new file mode 100644
index 0000000..6f995e1
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-dbcp-service-nar/1.16.3/org.apache.nifi.dbcp.HadoopDBCPConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HadoopDBCPConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HadoopDBCPConnectionPool</h1><h2>Description: </h2><p>Provides a Database Connection Poo [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.CreateHadoopSequenceFile/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.CreateHadoopSequenceFile/additionalDetails.html
new file mode 100644
index 0000000..b8bf7c2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.CreateHadoopSequenceFile/additionalDetails.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>CreateHadoopSequenceFile</title>
+
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <!-- Processor Documentation ================================================== -->
+        <h2>Description:</h2>
+        <p>This processor is used to create a Hadoop Sequence File, which essentially is a file of key/value pairs. The key 
+            will be a file name and the value will be the flow file content. The processor will take either a merged (a.k.a. packaged) flow 
+            file or a singular flow file. Historically, this processor handled the merging by type and size or time prior to creating a 
+            SequenceFile output; it no longer does this. If creating a SequenceFile that contains multiple files of the same type is desired,
+            precede this processor with a <code>RouteOnAttribute</code> processor to segregate files of the same type and follow that with a
+            <code>MergeContent</code> processor to bundle up files. If the type of files is not important, just use the 
+            <code>MergeContent</code> processor. When using the <code>MergeContent</code> processor, the following Merge Formats are 
+            supported by this processor:
+        <ul>
+            <li>TAR</li>
+            <li>ZIP</li>
+            <li>FlowFileStream v3</li>
+        </ul>
+        The created SequenceFile is named the same as the incoming FlowFile with the suffix '.sf'. For incoming FlowFiles that are 
+        bundled, the keys in the SequenceFile are the individual file names, the values are the contents of each file.
+    </p>
+    NOTE: The value portion of a key/value pair is loaded into memory. While there is a max size limit of 2GB, this could cause memory
+    issues if there are too many concurrent tasks and the flow file sizes are large.
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.CreateHadoopSequenceFile/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.CreateHadoopSequenceFile/index.html
new file mode 100644
index 0000000..2feca44
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.CreateHadoopSequenceFile/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CreateHadoopSequenceFile</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CreateHadoopSequenceFile</h1><h2>Description: </h2><p>Creates Hadoop Sequence Files from [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.DeleteHDFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.DeleteHDFS/index.html
new file mode 100644
index 0000000..9d05b7c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.DeleteHDFS/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteHDFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteHDFS</h1><h2>Description: </h2><p>Deletes one or more files or directories from HDFS. The path c [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.FetchHDFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.FetchHDFS/index.html
new file mode 100644
index 0000000..bcd9579
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.FetchHDFS/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchHDFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchHDFS</h1><h2>Description: </h2><p>Retrieves a file from HDFS. The content of the incoming FlowFile [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFS/index.html
new file mode 100644
index 0000000..f5e5851
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFS/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHDFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHDFS</h1><h2>Description: </h2><p>Fetch files from Hadoop Distributed File System (HDFS) into FlowFile [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFSFileInfo/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFSFileInfo/index.html
new file mode 100644
index 0000000..c3f69cd
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFSFileInfo/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHDFSFileInfo</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHDFSFileInfo</h1><h2>Description: </h2><p>Retrieves a listing of files and directories from HD [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFSSequenceFile/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFSSequenceFile/index.html
new file mode 100644
index 0000000..9fcd134
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.GetHDFSSequenceFile/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHDFSSequenceFile</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHDFSSequenceFile</h1><h2>Description: </h2><p>Fetch sequence files from Hadoop Distributed [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.ListHDFS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.ListHDFS/additionalDetails.html
new file mode 100644
index 0000000..732b9b7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.ListHDFS/additionalDetails.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+
+<head>
+    <meta charset="utf-8"/>
+    <title>ListHDFS</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h1>ListHDFS Filter Modes</h1>
+<p>
+There are three filter modes available for ListHDFS that determine how the regular expression in the <b><code>File Filter</code></b> property will be applied to listings in HDFS.
+<ul>
+    <li><b><code>Directories and Files</code></b></li>
+    Filtering will be applied to the names of directories and files.  If <b><code>Recurse Subdirectories</code></b> is set to true, only subdirectories with a matching name will be searched for files that match the regular expression defined in <b><code>File Filter</code></b>.
+    <li><b><code>Files Only</code></b></li>
+    Filtering will only be applied to the names of files.  If <b><code>Recurse Subdirectories</code></b> is set to true, the entire subdirectory tree will be searched for files that match the regular expression defined in <b><code>File Filter</code></b>.
+    <li><b><code>Full Path</code></b></li>
+    Filtering will be applied to the full path of files.  If <b><code>Recurse Subdirectories</code></b> is set to true, the entire subdirectory tree will be searched for files in which the full path of the file matches the regular expression defined in <b><code>File Filter</code></b>.<br>
+    Regarding <code>scheme</code> and <code>authority</code>, if a given file has a full path of <code>hdfs://hdfscluster:8020/data/txt/1.txt</code>, the filter will evaluate the regular expression defined in <b><code>File Filter</code></b> against two cases, matching if either is true:<br>
+    <ul>
+        <li>the full path including the scheme (<code>hdfs</code>), authority (<code>hdfscluster:8020</code>), and the remaining path components (<code>/data/txt/1.txt</code>)</li>
+        <li>only the path components (<code>/data/txt/1.txt</code>)</li>
+    </ul>
+</ul>
+<p>
+<h2>Examples:</h2>
+For the given examples, the following directory structure is used:
+<br>
+<br>
+    data<br>
+    ├── readme.txt<br>
+    ├── bin<br>
+    │   ├── readme.txt<br>
+    │   ├── 1.bin<br>
+    │   ├── 2.bin<br>
+    │   └── 3.bin<br>
+    ├── csv<br>
+    │   ├── readme.txt<br>
+    │   ├── 1.csv<br>
+    │   ├── 2.csv<br>
+    │   └── 3.csv<br>
+    └── txt<br>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├── readme.txt<br>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├── 1.txt<br>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├── 2.txt<br>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └── 3.txt<br>
+    <br><br>
+<h3><b>Directories and Files</b></h3>
+This mode is useful when the listing should match the names of directories and files with the regular expression defined in <b><code>File Filter</code></b>.  When <b><code>Recurse Subdirectories</code></b> is true, this mode allows the user to filter for files in subdirectories with names that match the regular expression defined in <b><code>File Filter</code></b>.
+<br>
+<br>
+ListHDFS configuration:
+<table><tr><th><b><code>Property</code></b></th><th><b><code>Value</code></b></th></tr><tr><td><b><code>Directory</code></b></td><td><code>/data</code></td></tr><tr><td><b><code>Recurse Subdirectories</code></b></td><td>true</td><tr><td><b><code>File Filter</code></b></td><td><code>.*txt.*</code></td></tr><tr><td><code><b>Filter Mode</b></code></td><td><code>Directories and Files</code></td></tr></table>
+<p>ListHDFS results:
+<ul>
+    <li>/data/readme.txt</li>
+    <li>/data/txt/readme.txt</li>
+    <li>/data/txt/1.txt</li>
+    <li>/data/txt/2.txt</li>
+    <li>/data/txt/3.txt</li>
+</ul>
+<h3><b>Files Only</b></h3>
+This mode is useful when the listing should match only the names of files with the regular expression defined in <b><code>File Filter</code></b>.  Directory names will not be matched against the regular expression defined in <b><code>File Filter</code></b>.  When <b><code>Recurse Subdirectories</code></b> is true, this mode allows the user to filter for files in the entire subdirectory tree of the directory specified in the <b><code>Directory</code></b> property.
+<br>
+<br>
+ListHDFS configuration:
+<table><tr><th><b><code>Property</code></b></th><th><b><code>Value</code></b></th></tr><tr><td><b><code>Directory</code></b></td><td><code>/data</code></td></tr><tr><td><b><code>Recurse Subdirectories</code></b></td><td>true</td><tr><td><b><code>File Filter</code></b></td><td><code>[^\.].*\.txt</code></td></tr><tr><td><code><b>Filter Mode</b></code></td><td><code>Files Only</code></td></tr></table>
+<p>ListHDFS results:
+<ul>
+    <li>/data/readme.txt</li>
+    <li>/data/bin/readme.txt</li>
+    <li>/data/csv/readme.txt</li>
+    <li>/data/txt/readme.txt</li>
+    <li>/data/txt/1.txt</li>
+    <li>/data/txt/2.txt</li>
+    <li>/data/txt/3.txt</li>
+</ul>
+<h3><b>Full Path</b></h3>
+This mode is useful when the listing should match the entire path of a file with the regular expression defined in <b><code>File Filter</code></b>.  When <b><code>Recurse Subdirectories</code></b> is true, this mode allows the user to filter for files in the entire subdirectory tree of the directory specified in the <b><code>Directory</code></b> property while allowing filtering based on the full path of each file.
+<br>
+<br>
+ListHDFS configuration:
+<table><tr><th><b><code>Property</code></b></th><th><b><code>Value</code></b></th></tr><tr><td><b><code>Directory</code></b></td><td><code>/data</code></td></tr><tr><td><b><code>Recurse Subdirectories</code></b></td><td>true</td><tr><td><b><code>File Filter</code></b></td><td><code>(/.*/)*csv/.*</code></td></tr><tr><td><code><b>Filter Mode</b></code></td><td><code>Full Path</code></td></tr></table>
+<p>ListHDFS results:
+<ul>
+    <li>/data/csv/readme.txt</li>
+    <li>/data/csv/1.csv</li>
+    <li>/data/csv/2.csv</li>
+    <li>/data/csv/3.csv</li>
+</ul>
+
+
+<h1>Streaming Versus Batch Processing</h1>
+
+<p>
+    ListHDFS performs a listing of all files that it encounters in the configured HDFS directory.
+    There are two common, broadly defined use cases.
+</p>
+
+<h3>Streaming Use Case</h3>
+
+<p>
+    By default, the Processor will create a separate FlowFile for each file in the directory and add attributes for filename, path, etc.
+    A common use case is to connect ListHDFS to the FetchHDFS processor. These two processors used in conjunction with one another provide the ability to
+    easily monitor a directory and fetch the contents of any new file as it lands in HDFS in an efficient streaming fashion.
+</p>
+
+<h3>Batch Use Case</h3>
+<p>
+    Another common use case is the desire to process all newly arriving files in a given directory, and to then perform some action
+    only when all files have completed their processing. The above approach of streaming the data makes this difficult, because NiFi is inherently
+    a streaming platform in that there is no "job" that has a beginning and an end. Data is simply picked up as it becomes available.
+</p>
+
+<p>
+    To solve this, the ListHDFS Processor can optionally be configured with a Record Writer. When a Record Writer is configured, a single
+    FlowFile will be created that will contain a Record for each file in the directory, instead of a separate FlowFile per file.
+    See the documentation for ListFile for an example of how to build a dataflow that allows for processing all of the files before proceeding
+    with any other step.
+</p>
+
+<p>
+    One important difference between the data produced by ListFile and ListHDFS, though, is the structure of the Records that are emitted. The Records
+    emitted by ListFile have a different schema than those emitted by ListHDFS. ListHDFS emits records that follow the following schema (in Avro format):
+</p>
+
+<code>
+    <pre>
+{
+  "type": "record",
+  "name": "nifiRecord",
+  "namespace": "org.apache.nifi",
+  "fields": [{
+    "name": "filename",
+    "type": "string"
+  }, {
+    "name": "path",
+    "type": "string"
+  }, {
+    "name": "directory",
+    "type": "boolean"
+  }, {
+    "name": "size",
+    "type": "long"
+  }, {
+    "name": "lastModified",
+    "type": {
+      "type": "long",
+      "logicalType": "timestamp-millis"
+    }
+  }, {
+    "name": "permissions",
+    "type": ["null", "string"]
+  }, {
+    "name": "owner",
+    "type": ["null", "string"]
+  }, {
+    "name": "group",
+    "type": ["null", "string"]
+  }, {
+    "name": "replication",
+    "type": ["null", "int"]
+  }, {
+    "name": "symLink",
+    "type": ["null", "boolean"]
+  }, {
+    "name": "encrypted",
+    "type": ["null", "boolean"]
+  }, {
+    "name": "erasureCoded",
+    "type": ["null", "boolean"]
+  }]
+}
+    </pre>
+</code>
+
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.ListHDFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.ListHDFS/index.html
new file mode 100644
index 0000000..f00a5be
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.ListHDFS/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListHDFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListHDFS</h1><h2>Description: </h2><p>Retrieves a listing of files from HDFS. Each time a listing is per [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.MoveHDFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.MoveHDFS/index.html
new file mode 100644
index 0000000..7e33aa4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.MoveHDFS/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>MoveHDFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">MoveHDFS</h1><h2>Description: </h2><p>Rename existing files or a directory of files (non-recursive) on H [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.PutHDFS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.PutHDFS/additionalDetails.html
new file mode 100644
index 0000000..a504228
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.PutHDFS/additionalDetails.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+
+<head>
+  <meta charset="utf-8" />
+  <title>PutHDFS</title>
+  <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+  <!-- Processor Documentation ================================================== -->
+  <h2>SSL Configuration:</h2>
+  <p>
+    Hadoop provides the ability to configure keystore and/or truststore properties. If you want to use SSL-secured file system like swebhdfs, you can use the Hadoop configurations instead of using SSL Context Service.
+    <ol>
+      <li>create 'ssl-client.xml' to configure the truststores.</li>
+      <p>ssl-client.xml Properties:</p>
+      <table>
+        <tr>
+          <th>Property</th>
+          <th>Default Value</th>
+          <th>Explanation</th>
+        </tr>
+        <tr>
+          <td>ssl.client.truststore.type</td>
+          <td>jks</td>
+          <td>Truststore file type</td>
+        </tr>
+        <tr>
+          <td>ssl.client.truststore.location</td>
+          <td>NONE</td>
+          <td>Truststore file location</td>
+        </tr>
+        <tr>
+          <td>ssl.client.truststore.password</td>
+          <td>NONE</td>
+          <td>Truststore file password</td>
+        </tr>
+        <tr>
+          <td>ssl.client.truststore.reload.interval</td>
+          <td>10000</td>
+          <td>Truststore reload interval, in milliseconds</td>
+        </tr>
+      </table>
+
+      <p>ssl-client.xml Example:</p>
+      <pre>
+&lt;configuration&gt;
+  &lt;property&gt;
+    &lt;name&gt;ssl.client.truststore.type&lt;/name&gt;
+    &lt;value&gt;jks&lt;/value&gt;
+  &lt;/property&gt;
+  &lt;property&gt;
+    &lt;name&gt;ssl.client.truststore.location&lt;/name&gt;
+    &lt;value&gt;/path/to/truststore.jks&lt;/value&gt;
+  &lt;/property&gt;
+  &lt;property&gt;
+    &lt;name&gt;ssl.client.truststore.password&lt;/name&gt;
+    &lt;value&gt;clientfoo&lt;/value&gt;
+  &lt;/property&gt;
+  &lt;property&gt;
+    &lt;name&gt;ssl.client.truststore.reload.interval&lt;/name&gt;
+    &lt;value&gt;10000&lt;/value&gt;
+  &lt;/property&gt;
+&lt;/configuration&gt;
+                    </pre>
+
+      <li>put 'ssl-client.xml' to the location looked up in the classpath, like under NiFi conriguration directory.</li>
+
+      <li>set the name of 'ssl-client.xml' to <i>hadoop.ssl.client.conf</i> in the 'core-site.xml' which HDFS processors use.</li>
+      <pre>
+&lt;configuration&gt;
+    &lt;property&gt;
+      &lt;name&gt;fs.defaultFS&lt;/name&gt;
+      &lt;value&gt;swebhdfs://{namenode.hostname:port}&lt;/value&gt;
+    &lt;/property&gt;
+    &lt;property&gt;
+      &lt;name&gt;hadoop.ssl.client.conf&lt;/name&gt;
+      &lt;value&gt;ssl-client.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;configuration&gt;
+                  </pre>
+    </ol>
+  </p>
+</body>
+
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.PutHDFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.PutHDFS/index.html
new file mode 100644
index 0000000..a712c51
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.PutHDFS/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHDFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHDFS</h1><h2>Description: </h2><p>Write FlowFile data to Hadoop Distributed File System (HDFS)</p><p>< [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.inotify.GetHDFSEvents/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.inotify.GetHDFSEvents/index.html
new file mode 100644
index 0000000..a10d223
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.16.3/org.apache.nifi.processors.hadoop.inotify.GetHDFSEvents/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHDFSEvents</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHDFSEvents</h1><h2>Description: </h2><p>This processor polls the notification events provided by [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/additionalDetails.html
new file mode 100644
index 0000000..11f1c29
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/additionalDetails.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>HazelcastMapCacheClient</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>HazelcastMapCacheClient</h2>
+
+<p>
+    This implementation of distributed map cache is backed by Hazelcast. The Hazelcast connection is provided and maintained
+    by an instance of HazelcastCacheManager. One HazelcastCacheManager might serve multiple cache clients. This implementation
+    uses the IMap data structure. The identifier of the Hazelcast IMap will be the same as the value of the property Hazelcast
+    Cache Name. It is recommended for all HazelcastMapCacheClient instances to use different cache names.
+</p>
+
+<p>
+    The implementation supports the atomic method family defined in AtomicDistributedMapCacheClient. This is achieved by maintaining
+    a revision number for every entry. The revision is a 8 byte long integer. It is increased when the entry is updated. The value is kept
+    during modifications not part of the atomic method family but this is mainly for regular management of the entries. It is not
+    recommended to work with elements by mixing the two method families.
+</p>
+
+<p>
+    The convention for all the entries is to reserve the first 8 bytes for the revision. The rest of the content is the serialized payload.
+</p>
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/index.html
new file mode 100644
index 0000000..98a267c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HazelcastMapCacheClient</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HazelcastMapCacheClient</h1><h2>Description: </h2><p>An implementation of DistributedMapC [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/additionalDetails.html
new file mode 100644
index 0000000..5dbdd6b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/additionalDetails.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>EmbeddedHazelcastCacheManager</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>EmbeddedHazelcastCacheManager</h2>
+
+<p>
+    This service starts and manages an embedded Hazelcast instance. The cache manager has direct accesses to the
+    instance - and the data stored in it. However, the instance sill opens a port for potential clients to join and
+    this cannot be prevented. Note that this might leave the instance open for rogue clients to join.
+</p>
+
+<p>
+    It is possible to have multiple independent Hazelcast instances on the same host (whether via EmbeddedHazelcastCacheManager
+    or externally) without any interference by setting the properties accordingly. If there are no other instances, the default
+    cluster name and port number can simply be used.
+</p>
+
+<p>
+    The service supports multiple ways to set up a Hazelcast cluster. This is controlled by the property, named "Hazelcast Clustering
+    Strategy". The following strategies may be used:
+</p>
+
+<h3>None</h3>
+
+<p>
+    This is the default value. Used when sharing data between nodes is not required. With this value, every NiFi node
+    in the cluster (if it is clustered) connects to its local Hazelcast server only. The Hazelcast servers do not form a cluster.
+</p>
+
+<h3>All Nodes</h3>
+
+<p>
+    Can be used only in clustered node. Using this strategy will result a single Hazelcast cluster consisting of the embedded instances
+    of all the NiFi nodes. This strategy requires all Hazelcast servers listening on the same port. Having different port numbers
+    (based on expression for example) would prevent the cluster from forming.
+</p>
+
+<p>
+    The controller service automatically gathers the host list from the NiFi cluster itself when it is enabled. It is
+    not required for all the nodes to have been successfully joined at this point, but the join must have been initiated. When
+    the controller service is enabled at the start of the NiFi instance, the enabling of the service will be prevented until the
+    node is considered clustered.
+</p>
+
+<p>
+    Hazelcast can accept nodes that join at a later time. As the new node has a comprehensive list of the expected instances - including the
+    already existing ones and itself - Hazelcast will be able to reach the expected state. Beware: this may take significant time.
+</p>
+
+<h3>Explicit</h3>
+
+<p>
+    Can be used only in clustered node. Explicit Clustering Strategy allows more control over the Hazelcast cluster members.
+    All Nodes Clustering Strategy, this strategy works with a list of Hazelcast servers, but instance discovery is not automatic.
+</p>
+
+<p>
+    This strategy uses property named "Hazelcast Instances" to determine the members of the Hazelcast clusters. This list of hosts must contain
+    all the instances expected to be part of the cluster. The instance list may contain only hosts which are part of the NiFi cluster. The
+    port specified in the "Hazelcast Port" will be used as Hazelcast server port.
+</p>
+
+<p>
+    In case the current node is not part of the instance list, the service will start a Hazelcast client. The client then will connect
+    to the Hazelcast addresses specified in the instance list. Users of the service should not perceive any difference in functionality.
+</p>
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/index.html
new file mode 100644
index 0000000..ca56c0d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>EmbeddedHazelcastCacheManager</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">EmbeddedHazelcastCacheManager</h1><h2>Description: </h2><p>A service that runs embe [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/additionalDetails.html
new file mode 100644
index 0000000..29140b3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/additionalDetails.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ExternalHazelcastCacheManager</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>ExternalHazelcastCacheManager</h2>
+
+<p>
+    This service connects to an external Hazelcast cluster (or standalone instance) as client. Hazelcast 4.0.0 or newer version is required.
+    The connection to the server is kept alive using Hazelcast's built in reconnection capability. This might be fine-tuned
+    by setting the following properties:
+</p>
+
+<ul>
+    <li>Hazelcast Initial Backoff</li>
+    <li>Hazelcast Maximum Backoff</li>
+    <li>Hazelcast Backoff Multiplier</li>
+    <li>Hazelcast Connection Timeout</li>
+</ul>
+
+<p>
+    If the service cannot connect or abruptly disconnected it tries to reconnect after a backoff time. The amount of time waiting
+    before the first attempt is defined by the Initial Backoff. If the connection is still not successful the client waits gradually
+    more between the attempts until the waiting time reaches the value set in the 'Hazelcast Maximum Backoff' property (or the connection timeout,
+    whichever is smaller). The backoff time after the first attempt is always based on the previous amount, multiplied by the Backoff Multiplier.
+    Note: the real backoff time might be slightly differ as some "jitter" is added to the calculation in order to avoid regularity.
+</p>
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/index.html
new file mode 100644
index 0000000..6eb09da
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hazelcast-services-nar/1.16.3/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExternalHazelcastCacheManager</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExternalHazelcastCacheManager</h1><h2>Description: </h2><p>A service that provides  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseCells/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseCells/additionalDetails.html
new file mode 100644
index 0000000..b1820c0
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseCells/additionalDetails.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>DeleteHBaseCells</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Overview</h2>
+<p>
+    This processor provides the ability to do deletes against one or more HBase cells, without having to delete the entire row. It should
+    be used as the primary delete method when visibility labels are in use and the cells have different visibility labels. Each line in
+    the flowfile body is a fully qualified cell (row id, column family, column qualifier and visibility labels if applicable). The separator
+    that separates each piece of the fully qualified cell is configurable, but <strong>::::</strong> is the default value.
+</p>
+<h2>Example FlowFile</h2>
+<pre>
+row1::::user::::name
+row1::::user::::address::::PII
+row1::::user::::billing_code_1::::PII&&amp;BILLING
+</pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseCells/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseCells/index.html
new file mode 100644
index 0000000..0fbd1c2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseCells/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteHBaseCells</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteHBaseCells</h1><h2>Description: </h2><p>This processor allows the user to delete individua [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseRow/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseRow/index.html
new file mode 100644
index 0000000..c4d0245
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.DeleteHBaseRow/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteHBaseRow</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteHBaseRow</h1><h2>Description: </h2><p>Delete HBase records individually or in batches. The i [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.FetchHBaseRow/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.FetchHBaseRow/index.html
new file mode 100644
index 0000000..308ac33
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.FetchHBaseRow/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchHBaseRow</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchHBaseRow</h1><h2>Description: </h2><p>Fetches a row from an HBase table. The Destination prope [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.GetHBase/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.GetHBase/index.html
new file mode 100644
index 0000000..f5f899b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.GetHBase/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHBase</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHBase</h1><h2>Description: </h2><p>This Processor polls HBase for any records in the specified table. [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseCell/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseCell/additionalDetails.html
new file mode 100644
index 0000000..7fb35d7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseCell/additionalDetails.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutHBaseCell</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Visibility Labels</h2>
+<p>
+    This processor provides the ability to attach visibility labels to HBase Puts that it generates, if visibility labels
+    are enabled on the HBase cluster. There are two ways to enable this:
+</p>
+<ul>
+    <li>Attributes on the flowfile.</li>
+    <li>Dynamic properties added to the processor.</li>
+</ul>
+<p>When the dynamic properties are defined on the processor, they will be the default value, but can be overridden by
+attributes set on the flowfile. The naming convention for both (property name and attribute name) is:</p>
+<ul>
+    <li>visibility.COLUMN_FAMILY - every column qualifier under the column family will get this.</li>
+    <li>visibility.COLUMN_FAMILY.COLUMN_VISIBILITY - the qualified column qualifier will be assigned this value.</li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseCell/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseCell/index.html
new file mode 100644
index 0000000..bbdc849
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseCell/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHBaseCell</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHBaseCell</h1><h2>Description: </h2><p>Adds the Contents of a FlowFile to HBase as the value of a [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseJSON/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseJSON/additionalDetails.html
new file mode 100644
index 0000000..09c4995
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseJSON/additionalDetails.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutHBaseJSON</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Visibility Labels</h2>
+<p>
+    This processor provides the ability to attach visibility labels to HBase Puts that it generates, if visibility labels
+    are enabled on the HBase cluster. There are two ways to enable this:
+</p>
+<ul>
+    <li>Attributes on the flowfile.</li>
+    <li>Dynamic properties added to the processor.</li>
+</ul>
+<p>When the dynamic properties are defined on the processor, they will be the default value, but can be overridden by
+    attributes set on the flowfile. The naming convention for both (property name and attribute name) is:</p>
+<ul>
+    <li>visibility.COLUMN_FAMILY - every column qualifier under the column family will get this.</li>
+    <li>visibility.COLUMN_FAMILY.COLUMN_VISIBILITY - the qualified column qualifier will be assigned this value.</li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseJSON/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseJSON/index.html
new file mode 100644
index 0000000..a91f9ab
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseJSON/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHBaseJSON</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHBaseJSON</h1><h2>Description: </h2><p>Adds rows to HBase based on the contents of incoming JSON  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseRecord/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseRecord/additionalDetails.html
new file mode 100644
index 0000000..d6077cd
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseRecord/additionalDetails.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutHBaseRecord</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Visibility Labels:</h2>
+<p>
+    PutHBaseRecord provides the ability to define a branch of the record as a map which contains an association between
+    column qualifiers and the visibility label that they should have assigned to them.
+</p>
+<h3>Example Schema</h3>
+<pre>
+{
+    "type": "record",
+    "name": "SampleRecord",
+    "fields": [
+        { "name": "name", "type": "string" },
+        { "name": "address", "type": "string" },
+        { "name": "dob", "type": "string" },
+        { "name": "attendingPhysician", "type": "string" },
+        { "name": "accountNumber", "type": "string" },
+        { "name": "visibility_labels", "type": { "type" : "map", "values": "string" } }
+    ]
+}
+</pre>
+<h3>Example Record</h3>
+<pre>
+{
+    "name": "John Smith",
+    "address": "12345 Main Street",
+    "dob": "1970-01-01",
+    "attendingPhysician": "Dr. Jane Doe",
+    "accountNumber": "1234-567-890-ABC",
+    "visibility_labels": {
+        "name": "OPEN",
+        "address": "PII",
+        "dob": "PII",
+        "attendingPhysician": "PII&amp;PHI",
+        "accountNumber": "PII&amp;BILLING"
+    }
+}
+</pre>
+<h3>Results in HBase</h3>
+<p>Example is for row with ID <em>patient-1</em> and column family <em>patient</em></p>
+<table>
+    <thead>
+        <tr>
+            <th>Row</th>
+            <th>Value</th>
+            <th>Visibility</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td>patient-1:patient:name</td>
+            <td>John Smith</td>
+            <td>OPEN</td>
+        </tr>
+        <tr>
+            <td>patient-1:patient:address</td>
+            <td>12345 Main Street</td>
+            <td>PII</td>
+        </tr>
+        <tr>
+            <td>patient-1:patient:</td>
+            <td>1970-01-01</td>
+            <td>PII</td>
+        </tr>
+        <tr>
+            <td>patient-1:patient:attendingPhysician</td>
+            <td>Dr. Jane Doe</td>
+            <td>PII&amp;PHI</td>
+        </tr>
+        <tr>
+            <td>patient-1:patient:accountNumber</td>
+            <td>1234-567-890-ABC</td>
+            <td>PII&amp;BILLING</td>
+        </tr>
+    </tbody>
+</table>
+<p>In addition to the branch for visibility labels, the same methods used for PutHBaseCell and PutHBaseJSON can be used.
+They are:</p>
+<ul>
+    <li>Attributes on the flowfile.</li>
+    <li>Dynamic properties added to the processor.</li>
+</ul>
+<p>When the dynamic properties are defined on the processor, they will be the default value, but can be overridden by
+    attributes set on the flowfile. The naming convention for both (property name and attribute name) is:</p>
+<ul>
+    <li>visibility.COLUMN_FAMILY - every column qualifier under the column family will get this.</li>
+    <li>visibility.COLUMN_FAMILY.COLUMN_VISIBILITY - the qualified column qualifier will be assigned this value.</li>
+</ul>
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseRecord/index.html
new file mode 100644
index 0000000..a62c12b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.PutHBaseRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHBaseRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHBaseRecord</h1><h2>Description: </h2><p>Adds rows to HBase based on the contents of a flowfile [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.ScanHBase/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.ScanHBase/index.html
new file mode 100644
index 0000000..a8e59fc
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.16.3/org.apache.nifi.hbase.ScanHBase/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ScanHBase</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ScanHBase</h1><h2>Description: </h2><p>Scans and fetches rows from an HBase table. This processor may b [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ClientMapCacheService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ClientMapCacheService/index.html
new file mode 100644
index 0000000..e333c32
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ClientMapCacheService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_1_1_2_ClientMapCacheService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_1_1_2_ClientMapCacheService</h1><h2>Description: </h2><p>Provides the abi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ClientService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ClientService/index.html
new file mode 100644
index 0000000..055c540
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_1_1_2_ClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_1_1_2_ClientService</h1><h2>Description: </h2><p>Implementation of HBaseClientSer [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ListLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ListLookupService/index.html
new file mode 100644
index 0000000..ce11017
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_ListLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_1_1_2_ListLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_1_1_2_ListLookupService</h1><h2>Description: </h2><p>No description provided. [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_RecordLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_RecordLookupService/index.html
new file mode 100644
index 0000000..0b618c8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_1_1_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_1_1_2_RecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_1_1_2_RecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_1_1_2_RecordLookupService</h1><h2>Description: </h2><p>A lookup service tha [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_ClientMapCacheService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_ClientMapCacheService/index.html
new file mode 100644
index 0000000..4206f33
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_ClientMapCacheService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_2_ClientMapCacheService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_2_ClientMapCacheService</h1><h2>Description: </h2><p>Provides the ability to  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_ClientService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_ClientService/index.html
new file mode 100644
index 0000000..8a7c222
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_ClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_2_ClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_2_ClientService</h1><h2>Description: </h2><p>Implementation of HBaseClientService usi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_RecordLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_RecordLookupService/index.html
new file mode 100644
index 0000000..4a47a9d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hbase_2-client-service-nar/1.16.3/org.apache.nifi.hbase.HBase_2_RecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HBase_2_RecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HBase_2_RecordLookupService</h1><h2>Description: </h2><p>A lookup service that retrie [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.dbcp.hive.HiveConnectionPool/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.dbcp.hive.HiveConnectionPool/index.html
new file mode 100644
index 0000000..d222422
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.dbcp.hive.HiveConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HiveConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HiveConnectionPool</h1><h2>Description: </h2><p>Provides Database Connection Pooling Service f [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.ConvertAvroToORC/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.ConvertAvroToORC/index.html
new file mode 100644
index 0000000..78e41b8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.ConvertAvroToORC/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConvertAvroToORC</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConvertAvroToORC</h1><h2>Description: </h2><p>Converts an Avro record into ORC file format. This [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.PutHiveQL/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.PutHiveQL/index.html
new file mode 100644
index 0000000..d1c93e9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.PutHiveQL/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHiveQL</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHiveQL</h1><h2>Description: </h2><p>Executes a HiveQL DDL/DML command (UPDATE, INSERT, e.g.). The co [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.PutHiveStreaming/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.PutHiveStreaming/index.html
new file mode 100644
index 0000000..4c3ee9b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.PutHiveStreaming/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHiveStreaming</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHiveStreaming</h1><h2>Description: </h2><p>This processor uses Hive Streaming to send flow fi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.SelectHiveQL/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.SelectHiveQL/index.html
new file mode 100644
index 0000000..e8cc292
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.SelectHiveQL/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SelectHiveQL</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SelectHiveQL</h1><h2>Description: </h2><p>Execute provided HiveQL SELECT query against a Hive databa [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.UpdateHiveTable/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.UpdateHiveTable/index.html
new file mode 100644
index 0000000..c4fb79f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.16.3/org.apache.nifi.processors.hive.UpdateHiveTable/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>UpdateHiveTable</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">UpdateHiveTable</h1><h2>Description: </h2><p>This processor uses a Hive JDBC connection and incom [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hl7-nar/1.16.3/org.apache.nifi.processors.hl7.ExtractHL7Attributes/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hl7-nar/1.16.3/org.apache.nifi.processors.hl7.ExtractHL7Attributes/index.html
new file mode 100644
index 0000000..5eda38b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hl7-nar/1.16.3/org.apache.nifi.processors.hl7.ExtractHL7Attributes/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractHL7Attributes</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractHL7Attributes</h1><h2>Description: </h2><p>Extracts information from an HL7 (Health L [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hl7-nar/1.16.3/org.apache.nifi.processors.hl7.RouteHL7/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hl7-nar/1.16.3/org.apache.nifi.processors.hl7.RouteHL7/index.html
new file mode 100644
index 0000000..fe8153b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hl7-nar/1.16.3/org.apache.nifi.processors.hl7.RouteHL7/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>RouteHL7</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">RouteHL7</h1><h2>Description: </h2><p>Routes incoming HL7 data according to user-defined queries. To add [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.GetHTMLElement/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.GetHTMLElement/index.html
new file mode 100644
index 0000000..82c03a5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.GetHTMLElement/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHTMLElement</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHTMLElement</h1><h2>Description: </h2><p>Extracts HTML element values from the incoming flowfil [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.ModifyHTMLElement/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.ModifyHTMLElement/index.html
new file mode 100644
index 0000000..774b1e5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.ModifyHTMLElement/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ModifyHTMLElement</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ModifyHTMLElement</h1><h2>Description: </h2><p>Modifies the value of an existing HTML element.  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.PutHTMLElement/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.PutHTMLElement/index.html
new file mode 100644
index 0000000..8f238d5
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-html-nar/1.16.3/org.apache.nifi.PutHTMLElement/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutHTMLElement</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutHTMLElement</h1><h2>Description: </h2><p>Places a new HTML element in the existing HTML DOM. Th [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-http-context-map-nar/1.16.3/org.apache.nifi.http.StandardHttpContextMap/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-http-context-map-nar/1.16.3/org.apache.nifi.http.StandardHttpContextMap/index.html
new file mode 100644
index 0000000..d5a023d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-http-context-map-nar/1.16.3/org.apache.nifi.http.StandardHttpContextMap/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardHttpContextMap</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardHttpContextMap</h1><h2>Description: </h2><p>Provides the ability to store and retr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-hwx-schema-registry-nar/1.16.3/org.apache.nifi.schemaregistry.hortonworks.HortonworksSchemaRegistry/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-hwx-schema-registry-nar/1.16.3/org.apache.nifi.schemaregistry.hortonworks.HortonworksSchemaRegistry/index.html
new file mode 100644
index 0000000..f6c0145
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-hwx-schema-registry-nar/1.16.3/org.apache.nifi.schemaregistry.hortonworks.HortonworksSchemaRegistry/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HortonworksSchemaRegistry</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HortonworksSchemaRegistry</h1><h2>Description: </h2><p>Provides a Schema Registry Servi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/additionalDetails.html
new file mode 100644
index 0000000..bbf5e49
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/additionalDetails.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8"/>
+    <title>JMSConnectionFactoryProvider</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+
+<body>
+<h2>Description</h2>
+<p>
+    This controller service serves as a general factory service to serving vendor specific
+    instances of the <i>javax.jms.ConnectionFactory</i>. It does so by allowing user to
+    configure vendor specific properties as well as point to the location of the vendor
+    provided JMS client libraries so the correct implementation of the <i>javax.jms.ConnectionFactory</i>
+    can be found, loaded, instantiated and served to the dependent processors (see PublishJMS, ConsumeJMS).
+</p>
+<p>
+    All JMS vendors and <i>ConnectionFactory</i> implementations are supported as long as the configuration values can
+    be set through <i>set</i> methods (detailed explanation in the last paragraph). However some helpful accommodation
+    are done for the following JMS vendors:
+</p>
+<ul>
+    <li>Apache ActiveMQ</li>
+    <li>IBM MQ</li>
+    <li>TIBCO EMS</li>
+    <li>Qpid JMS (AMQP 1.0)</li>
+</ul>
+<p>
+    This controller service exposes only a single mandatory static configuration property that are required across all
+    implementations. The rest of the configuration properties are either optional or vendor specific.
+</p>
+<p>
+    The mandatory configuration property is:
+</p>
+<ul>
+    <li><b>JMS Connection Factory Implementation</b> - The fully qualified name of the JMS <i>ConnectionFactory</i>
+        implementation class. For example:
+        <ul>
+            <li>Apache ActiveMQ - <a href="http://activemq.apache.org/maven/5.15.9/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html" target="_blank">org.apache.activemq.ActiveMQConnectionFactory</a></li>
+            <li>IBM MQ - <a href="https://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQQueueConnectionFactory.html" target="_blank">com.ibm.mq.jms.MQQueueConnectionFactory</a></li>
+            <li>TIBCO EMS - <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsQueueConnectionFactory.html" target="_blank">com.tibco.tibjms.TibjmsQueueConnectionFactory</a></li>
+            <li>Qpid JMS (AMQP 1.0) - <a href="https://github.com/apache/qpid-jms/blob/1.1.0/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java" target="_blank">org.apache.qpid.jms.JmsConnectionFactory</a></li>
+        </ul>
+    </li>
+</ul>
+<p>
+    The following static configuration properties are optional but required in many cases:
+</p>
+<ul>
+    <li><b>JMS Client Libraries</b> - Path to the directory with additional resources (eg. JARs,
+        configuration files, etc.) to be added to the classpath (defined as a comma separated list of values). Such resources typically represent target JMS client
+        libraries for the <i>ConnectionFactory</i> implementation.
+    </li>
+    <li><b>JMS Broker URI</b> - URI pointing to the network location of the JMS Message broker. For example:
+        <ul>
+            <li>Apache ActiveMQ - <i>tcp://myhost:1234</i> for single broker and
+                <i>failover:(tcp://myhost01:1234,tcp://myhost02:1234)</i> for multiple brokers.
+            </li>
+            <li>IBM MQ - <i>myhost(1234)</i> for single broker. <i>myhost01(1234),myhost02(1234)</i> for multiple
+                brokers.
+            </li>
+            <li>TIBCO EMS - <i>tcp://myhost:1234</i> for single broker and
+                <i>tcp://myhost01:7222,tcp://myhost02:7222</i> for multiple brokers.
+            </li>
+            <li>Qpid JMS (AMQP 1.0) - <i>amqp[s]://myhost:1234</i> for single broker and
+                <i>failover:(amqp[s]://myhost01:1234,amqp[s]://myhost02:1234)</i> for multiple brokers.
+            </li>
+        </ul>
+    </li>
+</ul>
+<p>
+    The rest of the vendor specific configuration are set through dynamic properties utilizing the
+    <a href="http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm" target="_blank">Java Beans</a> convention where a property
+    name is derived from the <i>set</i> method of the vendor specific <i>ConnectionFactory</i>'s implementation. For
+    example, <i>com.ibm.mq.jms.MQConnectionFactory.setChannel(String)</i> would imply 'channel' property and
+    <i>com.ibm.mq.jms.MQConnectionFactory.setTransportType(int)</i> would imply 'transportType' property. For the list
+    of available properties please consult vendor provided documentation. Following is examples of such vendor provided
+    documentation:
+</p>
+<ul>
+    <li><a href="http://activemq.apache.org/maven/5.15.9/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html" target="_blank">Apache
+        ActiveMQ</a></li>
+    <li>
+        <a href="https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQConnectionFactory.html" target="_blank">IBM
+            MQ</a></li>
+    <li>
+        <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsConnectionFactory.html" target="_blank">TIBCO
+            EMS</a></li>
+    <li>
+        <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsConnectionFactory.html" target="_blank">Qpid
+            JMS (AMQP 1.0)</a> </li>
+</ul>
+<p>
+    Besides the dynamic properties and <i>set</i> methods described in the previous section, some providers also support additional
+    configuration via the Broker URI (as query parameters added to the URI):
+</p>
+<ul>
+    <li>
+        <a href="https://qpid.apache.org/releases/qpid-jms-1.1.0/docs/index.html#connection-uri" target="_blank">Qpid
+            JMS (AMQP 1.0)</a> </li>
+</ul>
+<h2>Sample controller service configuration for IBM MQ</h2>
+<table>
+    <tr>
+        <th>Property</th>
+        <th>Value</th>
+        <th>Static/Dynamic</th>
+        <th>Comments</th>
+    </tr>
+    <tr>
+        <td>JMS Connection Factory Implementation</td>
+        <td>com.ibm.mq.jms.MQQueueConnectionFactory</td>
+        <td>Static</td>
+        <td>Vendor provided implementation of QueueConnectionFactory</td>
+    </tr>
+    <tr>
+        <td>JMS Client Libraries</td>
+        <td>/opt/mqm/java/lib</td>
+        <td>Static</td>
+        <td>Default installation path of client JAR files on Linux systems</td>
+    </tr>
+    <tr>
+        <td>JMS Broker URI</td>
+        <td>mqhost01(1414),mqhost02(1414)</td>
+        <td>Static</td>
+        <td><a href="https://www.ibm.com/support/knowledgecenter/ro/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/ucli_pqcfm.html#MQTopicConnectionFactory_enterporthostname" target="_blank">Connection Name List syntax</a>.
+            Colon separated host/port pair(s) is also supported</td>
+    </tr>
+    <tr>
+        <td>JMS SSL Context Service</td>
+        <td></td>
+        <td>Static</td>
+        <td>Only required if using SSL/TLS</td>
+    </tr>
+    <tr>
+        <td>channel</td>
+        <td>TO.BAR</td>
+        <td>Dynamic</td>
+        <td>Required when using the client transport mode</td>
+    </tr>
+    <tr>
+        <td>queueManager</td>
+        <td>PQM1</td>
+        <td>Dynamic</td>
+        <td>Name of queue manager. Always required.</td>
+    </tr>
+    <tr>
+        <td>transportType</td>
+        <td>1</td>
+        <td>Dynamic</td>
+        <td>Constant integer value corresponding to the client transport mode. Default value is <a href="https://www.ibm.com/support/knowledgecenter/en/SSEQTP_9.0.0/com.ibm.websphere.base.doc/ae/umj_pjcfm.html" target="_blank">"Bindings, then client"</a></td>
+    </tr>
+</table>
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/index.html
new file mode 100644
index 0000000..ef23de4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JMSConnectionFactoryProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JMSConnectionFactoryProvider</h1><h2>Description: </h2><p>Provides a generic service [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/additionalDetails.html
new file mode 100644
index 0000000..eeff65d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/additionalDetails.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>JMSConnectionFactoryProvider</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Description:</h2>
+<p>
+    This ControllerService allows users to reference a JMS Connection Factory that has already been established and
+    made available via Java Naming and Directory Interface (JNDI) Server. Please see documentation from your JMS Vendor in order
+    to understand the appropriate values to configure for this service.
+</p>
+<p>
+    A Connection Factory in Java is typically obtained via JNDI in code like below. The comments have been added in to explain how
+    this maps to the Controller Service's configuration.
+</p>
+<pre>
+<code>
+Hashtable env = new Hashtable();
+env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_INITIAL_CONTEXT_FACTORY); // Value for this comes from the "JNDI Initial Context Factory Class" property.
+env.put(Context.PROVIDER_URL, JNDI_PROVIDER_URL); // Value for this comes from the "JNDI Provider URL" property.
+env.put("My-Environment-Variable", "Environment-Variable-Value"); // This is accomplished by added a user-defined property with name "My-Environment-Variable" and value "Environment-Variable-Value"
+
+Context initialContext = new InitialContext(env);
+ConnectionFactory connectionFactory = initialContext.lookup(JNDI_CONNECTION_FACTORY_NAME); // Value for this comes from the "JNDI Name of the Connection Factory" property
+</code>
+</pre>
+
+<p>
+    It is also important to note that, in order for this to work, the class named by the "JNDI Initial Context Factory Class" must be available on the classpath.
+    The JMS provider specific client classes (like the class of the Connection Factory object to be retrieved from JNDI) must also be available on the classpath.
+    In NiFi, this is accomplished by setting the "JNDI / JMS Client Libraries" property to point to one or more .jar files or directories (comma-separated values).
+</p>
+
+<p>
+    When the Controller Service is disabled and then re-enabled, it will perform the JNDI lookup again. Once the Connection Factory has been obtained, though,
+    it will not perform another JNDI lookup until the service is disabled.
+</p>
+
+
+<h2>Example:</h2>
+
+<p>
+    As an example, the following configuration may be used to connect to Active MQ's JMS Broker, using the Connection Factory provided via their embedded JNDI server:
+</p>
+
+<table>
+    <thead>
+        <th>Property Name</th>
+        <th>Property Value</th>
+    </thead>
+    <tbody>
+      <tr>
+          <td>JNDI Initial Context Factory Class</td>
+          <td>org.apache.activemq.jndi.ActiveMQInitialContextFactory</td>
+      </tr>
+      <tr>
+          <td>JNDI Provider URL</td>
+          <td>tcp://jms-broker:61616</td>
+      </tr>
+      <tr>
+          <td>JNDI Name of the Connection Factory</td>
+          <td>ConnectionFactory</td>
+      </tr>
+      <tr>
+          <td>JNDI / JMS Client Libraries</td>
+          <td>/opt/apache-activemq-5.15.2/lib/</td>
+      </tr>
+    </tbody>
+</table>
+
+<p>
+    The above example assumes that there exists a host that is accessible with hostname "jms-broker" and that is running Apache ActiveMQ on port 61616 and also that
+    the jar(s) containing the org.apache.activemq.jndi.ActiveMQInitialContextFactory class and the other JMS client classes can be found within the /opt/apache-activemq-5.15.2/lib/ directory.
+</p>
+
+</body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/index.html
new file mode 100644
index 0000000..8c05612
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JndiJmsConnectionFactoryProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JndiJmsConnectionFactoryProvider</h1><h2>Description: </h2><p>Provides a service [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.ConsumeJMS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.ConsumeJMS/additionalDetails.html
new file mode 100644
index 0000000..e17642b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.ConsumeJMS/additionalDetails.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ConsumeJMS</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+    This processor consumes messages from JMS compliant messaging system and converts them to a FlowFile to be routed to the next component in the flow.
+</p>
+<p>
+    This processor does two things. It constructs FlowFile by extracting information from the consumed JMS message including body, standard 
+    JMS Headers and Properties.
+    The message body is written to a FlowFile while standard JMS Headers and Properties are set as FlowFile attributes.
+</p>
+
+<h2>Configuration Details</h2>
+<p>
+    At the time of writing this document it only defines the essential configuration properties which are suitable for most cases. 
+    Other properties will be defined later as this component progresses.
+    Configuring ConsumeJMS:
+</p>
+<ol>
+    <li><b>User Name</b> - [OPTIONAL] User Name used for authentication and authorization when this processor obtains <i>javax.jms.Connection</i> 
+    from the pre-configured <i>javax.jms.ConnectionFactory</i> (see below).
+    </li>
+    <li><b>Password</b> - [OPTIONAL] Password used in conjunction with <b>User Name</b>.
+    </li>
+    <li><b>Destination Name</b> - [REQUIRED] the name of the <i>javax.jms.Destination</i>. 
+    Usually provided by administrator (e.g., 'topic://myTopic'). 
+    </li>
+    <li><b>Destination Type</b> - [REQUIRED] the type of the <i>javax.jms.Destination</i>. Could be one of 'QUEUE' or 'TOPIC'
+    Usually provided by the administrator. Defaults to 'QUEUE'.
+    </li>
+</ol>
+<h3>Connection Factory Configuration</h3>
+There are multiple ways to configure the Connection Factory for the processor:
+<ul>
+    <li><b>Connection Factory Service</b> property - link to a pre-configured controller service (<i>JndiJmsConnectionFactoryProvider</i> or <i>JMSConnectionFactoryProvider</i>)
+    </li>
+    <li><b>JNDI *</b> properties - processor level configuration, the properties are the same as the properties of <i>JndiJmsConnectionFactoryProvider</i> controller service,
+        the dynamic properties can also be used in this case
+    </li>
+    <li><b>JMS *</b> properties - processor level configuration, the properties are the same as the properties of <i>JMSConnectionFactoryProvider</i> controller service,
+        the dynamic properties can also be used in this case
+    </li>
+</ul>
+<p>
+    The preferred way is to use the Connection Factory Service property and a pre-configured controller service. It is also the most convenient method, because it is enough
+    to configure the controller service once and then it can be used in multiple processors.
+</p>
+<p>
+    However, some JMS client libraries may not work with the controller services due to incompatible Java ClassLoader handling between the 3rd party JMS client library and NiFi.
+    Should you encounter <i>java.lang.ClassCastException</i> errors when using the controller services, please try to configure the Connection Factory via the 'JNDI *' or
+    the 'JMS *' and the dynamic properties of the processor.
+    For more details on these properties, see the documentation of the corresponding controller service (<i>JndiJmsConnectionFactoryProvider</i> for 'JNDI *' and
+    <i>JMSConnectionFactoryProvider</i> for 'JMS *').
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.ConsumeJMS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.ConsumeJMS/index.html
new file mode 100644
index 0000000..ca4c9ff
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.ConsumeJMS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeJMS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeJMS</h1><h2>Description: </h2><p>Consumes JMS Message of type BytesMessage, TextMessage, Object [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.PublishJMS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.PublishJMS/additionalDetails.html
new file mode 100644
index 0000000..190acc8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.PublishJMS/additionalDetails.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PublishJMS</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+    This processor publishes the contents of the incoming FlowFile to a JMS compliant messaging system.
+</p>
+<p>
+    This processor does two things. It constructs JMS Message by extracting FlowFile contents (both body and attributes). 
+    Once message is constructed it is sent to a pre-configured JMS Destination.
+    Standard JMS Headers
+    will be extracted from the FlowFile and set on <i>javax.jms.Message</i> as JMS headers while other 
+    FlowFile attributes will be set as properties of <i>javax.jms.Message</i>. Upon success the incoming FlowFile is transferred
+    to the <i>success</i> Relationship and upon failure FlowFile is
+    penalized and transferred to the <i>failure</i> Relationship.
+</p>
+<h2>Configuration Details</h2>
+<p>
+    At the time of writing this document it only defines the essential configuration properties which are suitable for most cases. 
+    Other properties will be defined later as this component progresses.
+    Configuring PublishJMS:
+</p>
+<ol>
+    <li><b>User Name</b> - [OPTIONAL] User Name used for authentication and authorization when this processor obtains <i>javax.jms.Connection</i> 
+    from the pre-configured <i>javax.jms.ConnectionFactory</i> (see below).
+    </li>
+    <li><b>Password</b> - [OPTIONAL] Password used in conjunction with <b>User Name</b>.
+    </li>
+    <li><b>Destination Name</b> - [REQUIRED] the name of the <i>javax.jms.Destination</i>. 
+    Usually provided by administrator (e.g., 'topic://myTopic'). 
+    </li>
+    <li><b>Destination Type</b> - [REQUIRED] the type of the <i>javax.jms.Destination</i>. Could be one of 'QUEUE' or 'TOPIC'
+    Usually provided by the administrator. Defaults to 'QUEUE'.
+    </li>
+</ol>
+<h3>Connection Factory Configuration</h3>
+There are multiple ways to configure the Connection Factory for the processor:
+<ul>
+    <li><b>Connection Factory Service</b> property - link to a pre-configured controller service (<i>JndiJmsConnectionFactoryProvider</i> or <i>JMSConnectionFactoryProvider</i>)
+    </li>
+    <li><b>JNDI *</b> properties - processor level configuration, the properties are the same as the properties of <i>JndiJmsConnectionFactoryProvider</i> controller service,
+        the dynamic properties can also be used in this case
+    </li>
+    <li><b>JMS *</b> properties - processor level configuration, the properties are the same as the properties of <i>JMSConnectionFactoryProvider</i> controller service,
+        the dynamic properties can also be used in this case
+    </li>
+</ul>
+<p>
+    The preferred way is to use the Connection Factory Service property and a pre-configured controller service. It is also the most convenient method, because it is enough
+    to configure the controller service once and then it can be used in multiple processors.
+</p>
+<p>
+    However, some JMS client libraries may not work with the controller services due to incompatible Java ClassLoader handling between the 3rd party JMS client library and NiFi.
+    Should you encounter <i>java.lang.ClassCastException</i> errors when using the controller services, please try to configure the Connection Factory via the 'JNDI *' or
+    the 'JMS *' and the dynamic properties of the processor.
+    For more details on these properties, see the documentation of the corresponding controller service (<i>JndiJmsConnectionFactoryProvider</i> for 'JNDI *' and
+    <i>JMSConnectionFactoryProvider</i> for 'JMS *').
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.PublishJMS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.PublishJMS/index.html
new file mode 100644
index 0000000..028556d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jms-processors-nar/1.16.3/org.apache.nifi.jms.processors.PublishJMS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishJMS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishJMS</h1><h2>Description: </h2><p>Creates a JMS Message from the contents of a FlowFile and send [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-jolt-record-nar/1.16.3/org.apache.nifi.processors.jolt.record.JoltTransformRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-jolt-record-nar/1.16.3/org.apache.nifi.processors.jolt.record.JoltTransformRecord/index.html
new file mode 100644
index 0000000..7795c54
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-jolt-record-nar/1.16.3/org.apache.nifi.processors.jolt.record.JoltTransformRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JoltTransformRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JoltTransformRecord</h1><h2>Description: </h2><p>Applies a list of Jolt specifications to the [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_1_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_1_0/additionalDetails.html
new file mode 100644
index 0000000..1fd6449
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_1_0/additionalDetails.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ConsumeKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+            for data using KafkaConsumer API available with Kafka 1.0. When a message is received 
+            from Kafka, the message will be deserialized using the configured Record Reader, and then
+            written to a FlowFile by serializing the message with the configured Record Writer.
+        </p>
+
+
+        <h2>Security Configuration:</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+        <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+        <pre>
+    SSL://host.name:port
+            </pre>
+        In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+        In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+        <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+        <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_1_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_1_0/index.html
new file mode 100644
index 0000000..a07acc7
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_1_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafkaRecord_1_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafkaRecord_1_0</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka sp [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_1_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_1_0/additionalDetails.html
new file mode 100644
index 0000000..f206b0b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_1_0/additionalDetails.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ConsumeKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+            for data using KafkaConsumer API available with Kafka 1.0. When a message is received 
+            from Kafka, this Processor emits a FlowFile where the content of the FlowFile is the value 
+            of the Kafka message.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+        <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+        <pre>
+    SSL://host.name:port
+            </pre>
+        In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+        In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+        <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+        <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_1_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_1_0/index.html
new file mode 100644
index 0000000..6e56a87
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_1_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafka_1_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafka_1_0</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka specifically b [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_1_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_1_0/additionalDetails.html
new file mode 100644
index 0000000..54b7786
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_1_0/additionalDetails.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PublishKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor puts the contents of a FlowFile to a Topic in
+            <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+            with Kafka 1.0 API. The contents of the incoming FlowFile will be read using the
+            configured Record Reader. Each record will then be serialized using the configured
+            Record Writer, and this serialized form will be the content of a Kafka message.
+            This message is optionally assigned a key by using the &lt;Kafka Key&gt; Property.
+        </p>
+        
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+            <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+            <pre>
+    SSL://host.name:port
+            </pre>
+            In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+            In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+            <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+            <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+            <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_1_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_1_0/index.html
new file mode 100644
index 0000000..b34515b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_1_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafkaRecord_1_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafkaRecord_1_0</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as in [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_1_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_1_0/additionalDetails.html
new file mode 100644
index 0000000..7d68fe0
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_1_0/additionalDetails.html
@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PublishKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor puts the contents of a FlowFile to a Topic in
+            <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+            with Kafka 1.0 API. The content of a FlowFile becomes the contents of a Kafka message.
+            This message is optionally assigned a key by using the &lt;Kafka Key&gt; Property.
+        </p>
+
+        <p>
+            The Processor allows the user to configure an optional Message Demarcator that
+            can be used to send many messages per FlowFile. For example, a <i>\n</i> could be used
+            to indicate that the contents of the FlowFile should be used to send one message
+            per line of text. It also supports multi-char demarcators (e.g., 'my custom demarcator').
+            If the property is not set, the entire contents of the FlowFile
+            will be sent as a single message. When using the demarcator, if some messages are
+            successfully sent but other messages fail to send, the resulting FlowFile will be
+            considered a failed FlowFile and will have additional attributes to that effect.
+            One of such attributes is 'failed.last.idx' which indicates the index of the last message
+            that was successfully ACKed by Kafka. (if no demarcator is used the value of this index will be -1).
+            This will allow PublishKafka to only re-send un-ACKed messages on the next re-try.
+        </p>
+        
+        
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+            <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+            <pre>
+    SSL://host.name:port
+            </pre>
+            In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+            In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+            <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+            <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+            <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_1_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_1_0/index.html
new file mode 100644
index 0000000..53390c6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_1_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafka_1_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafka_1_0</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as a message to A [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_1_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_1_0/index.html
new file mode 100644
index 0000000..4a914ef
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-1-0-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_1_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KafkaRecordSink_1_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KafkaRecordSink_1_0</h1><h2>Description: </h2><p>Provides a service to write records to a Kaf [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_0/additionalDetails.html
new file mode 100644
index 0000000..ec2e266
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_0/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ConsumeKafkaRecord</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+            for data using KafkaConsumer API available with Kafka 2.0. When a message is received
+            from Kafka, the message will be deserialized using the configured Record Reader, and then
+            written to a FlowFile by serializing the message with the configured Record Writer.
+        </p>
+
+        <h2>Consumer Partition Assignment</h2>
+        <p>
+            By default, this processor will subscribe to one or more Kafka topics in such a way that the topics to consume from are randomly
+            assigned to the nodes in the NiFi cluster. Consider a scenario where a single Kafka topic has 8 partitions and the consuming
+            NiFi cluster has 3 nodes. In this scenario, Node 1 may be assigned partitions 0, 1, and 2. Node 2 may be assigned partitions 3, 4, and 5.
+            Node 3 will then be assigned partitions 6 and 7.
+        </p>
+
+        <p>
+            In this scenario, if Node 3 somehow fails or stops pulling data from Kafka, partitions 6 and 7 may then be reassigned to the other two nodes.
+            For most use cases, this is desirable. It provides fault tolerance and allows the remaining nodes to pick up the slack. However, there are cases
+            where this is undesirable.
+        </p>
+
+        <p>
+            One such case is when using NiFi to consume Change Data Capture (CDC) data from Kafka. Consider again the above scenario. Consider that Node 3
+            has pulled 1,000 messages from Kafka but has not yet delivered them to their final destination. NiFi is then stopped and restarted, and that takes
+            15 minutes to complete. In the meantime, Partitions 6 and 7 have been reassigned to the other nodes. Those nodes then proceeded to pull data from
+            Kafka and deliver it to the desired destination. After 15 minutes, Node 3 rejoins the cluster and then continues to deliver its 1,000 messages that
+            it has already pulled from Kafka to the destination system. Now, those records have been delivered out of order.
+        </p>
+
+        <p>
+            The solution for this, then, is to assign partitions statically instead of dynamically. In this way, we can assign Partitions 6 and 7 to Node 3 specifically.
+            Then, if Node 3 is restarted, the other nodes will not pull data from Partitions 6 and 7. The data will remain queued in Kafka until Node 3 is restarted. By
+            using this approach, we can ensure that the data that already was pulled can be processed (assuming First In First Out Prioritizers are used) before newer messages
+            are handled.
+        </p>
+
+        <p>
+            In order to provide a static mapping of node to Kafka partition(s), one or more user-defined properties must be added using the naming scheme
+            <code>partitions.&lt;hostname&gt;</code> with the value being a comma-separated list of Kafka partitions to use. For example,
+            <code>partitions.nifi-01=0, 3, 6, 9</code>, <code>partitions.nifi-02=1, 4, 7, 10</code>, and <code>partitions.nifi-03=2, 5, 8, 11</code>.
+            The hostname that is used can be the fully qualified hostname, the "simple" hostname, or the IP address. There must be an entry for each node in
+            the cluster, or the Processor will become invalid. If it is desirable for a node to not have any partitions assigned to it, a Property may be
+            added for the hostname with an empty string as the value.
+        </p>
+
+        <p>
+            NiFi cannot readily validate that all Partitions have been assigned before the Processor is scheduled to run. However, it can validate that no
+            partitions have been skipped. As such, if partitions 0, 1, and 3 are assigned but not partition 2, the Processor will not be valid. However,
+            if partitions 0, 1, and 2 are assigned, the Processor will become valid, even if there are 4 partitions on the Topic. When the Processor is
+            started, the Processor will immediately start to fail, logging errors, and avoid pulling any data until the Processor is updated to account
+            for all partitions. Once running, if the number of partitions is changed, the Processor will continue to run but not pull data from the newly
+            added partitions. Once stopped, it will begin to error until all partitions have been assigned. Additionally, if partitions that are assigned
+            do not exist (e.g., partitions 0, 1, 2, 3, 4, 5, 6, and 7 are assigned, but the Topic has only 4 partitions), then the Processor will begin
+            to log errors on startup and will not pull data.
+        </p>
+
+        <p>
+            In order to use a static mapping of Kafka partitions, the "Topic Name Format" must be set to "names" rather than "pattern." Additionally, all
+            Topics that are to be consumed must have the same number of partitions. If multiple Topics are to be consumed and have a different number of
+            partitions, multiple Processors must be used so that each Processor consumes only from Topics with the same number of partitions.
+        </p>
+
+
+        <h2>Security Configuration:</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+        <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+        <pre>
+    SSL://host.name:port
+            </pre>
+        In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+        In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate.
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+        <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : com.sun.security.auth.module.Krb5LoginModule required
+                                        useKeyTab=true
+                                        storeKey=true
+                                        keyTab="/path/to/nifi.keytab"
+                                        serviceName="kafka"
+                                        principal="nifi@YOURREALM.COM";
+            </pre>
+        </ol>
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SCRAM, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+        </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+        <li>specify the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+        <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <p>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_0/index.html
new file mode 100644
index 0000000..78d23b0
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafkaRecord_2_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafkaRecord_2_0</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka sp [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_0/additionalDetails.html
new file mode 100644
index 0000000..e7cf092
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_0/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ConsumeKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+            for data using KafkaConsumer API available with Kafka 2.0. When a message is received
+            from Kafka, this Processor emits a FlowFile where the content of the FlowFile is the value
+            of the Kafka message.
+        </p>
+
+        <h2>Consumer Partition Assignment</h2>
+        <p>
+            By default, this processor will subscribe to one or more Kafka topics in such a way that the topics to consume from are randomly
+            assigned to the nodes in the NiFi cluster. Consider a scenario where a single Kafka topic has 8 partitions and the consuming
+            NiFi cluster has 3 nodes. In this scenario, Node 1 may be assigned partitions 0, 1, and 2. Node 2 may be assigned partitions 3, 4, and 5.
+            Node 3 will then be assigned partitions 6 and 7.
+        </p>
+
+        <p>
+            In this scenario, if Node 3 somehow fails or stops pulling data from Kafka, partitions 6 and 7 may then be reassigned to the other two nodes.
+            For most use cases, this is desirable. It provides fault tolerance and allows the remaining nodes to pick up the slack. However, there are cases
+            where this is undesirable.
+        </p>
+
+        <p>
+            One such case is when using NiFi to consume Change Data Capture (CDC) data from Kafka. Consider again the above scenario. Consider that Node 3
+            has pulled 1,000 messages from Kafka but has not yet delivered them to their final destination. NiFi is then stopped and restarted, and that takes
+            15 minutes to complete. In the meantime, Partitions 6 and 7 have been reassigned to the other nodes. Those nodes then proceeded to pull data from
+            Kafka and deliver it to the desired destination. After 15 minutes, Node 3 rejoins the cluster and then continues to deliver its 1,000 messages that
+            it has already pulled from Kafka to the destination system. Now, those records have been delivered out of order.
+        </p>
+
+        <p>
+            The solution for this, then, is to assign partitions statically instead of dynamically. In this way, we can assign Partitions 6 and 7 to Node 3 specifically.
+            Then, if Node 3 is restarted, the other nodes will not pull data from Partitions 6 and 7. The data will remain queued in Kafka until Node 3 is restarted. By
+            using this approach, we can ensure that the data that already was pulled can be processed (assuming First In First Out Prioritizers are used) before newer messages
+            are handled.
+        </p>
+
+        <p>
+            In order to provide a static mapping of node to Kafka partition(s), one or more user-defined properties must be added using the naming scheme
+            <code>partitions.&lt;hostname&gt;</code> with the value being a comma-separated list of Kafka partitions to use. For example,
+            <code>partitions.nifi-01=0, 3, 6, 9</code>, <code>partitions.nifi-02=1, 4, 7, 10</code>, and <code>partitions.nifi-03=2, 5, 8, 11</code>.
+            The hostname that is used can be the fully qualified hostname, the "simple" hostname, or the IP address. There must be an entry for each node in
+            the cluster, or the Processor will become invalid. If it is desirable for a node to not have any partitions assigned to it, a Property may be
+            added for the hostname with an empty string as the value.
+        </p>
+
+        <p>
+            NiFi cannot readily validate that all Partitions have been assigned before the Processor is scheduled to run. However, it can validate that no
+            partitions have been skipped. As such, if partitions 0, 1, and 3 are assigned but not partition 2, the Processor will not be valid. However,
+            if partitions 0, 1, and 2 are assigned, the Processor will become valid, even if there are 4 partitions on the Topic. When the Processor is
+            started, the Processor will immediately start to fail, logging errors, and avoid pulling any data until the Processor is updated to account
+            for all partitions. Once running, if the number of partitions is changed, the Processor will continue to run but not pull data from the newly
+            added partitions. Once stopped, it will begin to error until all partitions have been assigned. Additionally, if partitions that are assigned
+            do not exist (e.g., partitions 0, 1, 2, 3, 4, 5, 6, and 7 are assigned, but the Topic has only 4 partitions), then the Processor will begin
+            to log errors on startup and will not pull data.
+        </p>
+
+        <p>
+            In order to use a static mapping of Kafka partitions, the "Topic Name Format" must be set to "names" rather than "pattern." Additionally, all
+            Topics that are to be consumed must have the same number of partitions. If multiple Topics are to be consumed and have a different number of
+            partitions, multiple Processors must be used so that each Processor consumes only from Topics with the same number of partitions.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+        <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+        <pre>
+    SSL://host.name:port
+            </pre>
+        In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+        In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate.
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+        <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : com.sun.security.auth.module.Krb5LoginModule required
+                                        useKeyTab=true
+                                        storeKey=true
+                                        keyTab="/path/to/nifi.keytab"
+                                        serviceName="kafka"
+                                        principal="nifi@YOURREALM.COM";
+            </pre>
+        </ol>
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SCRAM, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+        </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+        <li>specify the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+        <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <p>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_0/index.html
new file mode 100644
index 0000000..8e2b98c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafka_2_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafka_2_0</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka specifically b [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_0/additionalDetails.html
new file mode 100644
index 0000000..fc9a6e8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_0/additionalDetails.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PublishKafkaRecord</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor puts the contents of a FlowFile to a Topic in
+            <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+            with Kafka 2.0 API. The contents of the incoming FlowFile will be read using the
+            configured Record Reader. Each record will then be serialized using the configured
+            Record Writer, and this serialized form will be the content of a Kafka message.
+            This message is optionally assigned a key by using the &lt;Kafka Key&gt; Property.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+            <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+            <pre>
+    SSL://host.name:port
+            </pre>
+            In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+            In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+            <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+            <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+            <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SSL, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_0/index.html
new file mode 100644
index 0000000..507d7bc
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafkaRecord_2_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafkaRecord_2_0</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as in [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_0/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_0/additionalDetails.html
new file mode 100644
index 0000000..5618529
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_0/additionalDetails.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PublishKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor puts the contents of a FlowFile to a Topic in
+            <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+            with Kafka 2.0 API. The content of a FlowFile becomes the contents of a Kafka message.
+            This message is optionally assigned a key by using the &lt;Kafka Key&gt; Property.
+        </p>
+
+        <p>
+            The Processor allows the user to configure an optional Message Demarcator that
+            can be used to send many messages per FlowFile. For example, a <i>\n</i> could be used
+            to indicate that the contents of the FlowFile should be used to send one message
+            per line of text. It also supports multi-char demarcators (e.g., 'my custom demarcator').
+            If the property is not set, the entire contents of the FlowFile
+            will be sent as a single message. When using the demarcator, if some messages are
+            successfully sent but other messages fail to send, the resulting FlowFile will be
+            considered a failed FlowFile and will have additional attributes to that effect.
+            One of such attributes is 'failed.last.idx' which indicates the index of the last message
+            that was successfully ACKed by Kafka. (if no demarcator is used the value of this index will be -1).
+            This will allow PublishKafka to only re-send un-ACKed messages on the next re-try.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+            <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+            <pre>
+    SSL://host.name:port
+            </pre>
+            In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+            In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+            <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+            <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+            <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SSL, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_0/index.html
new file mode 100644
index 0000000..74b9d3b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafka_2_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafka_2_0</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as a message to A [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_0/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_0/index.html
new file mode 100644
index 0000000..efa7ae4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-0-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_0/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KafkaRecordSink_2_0</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KafkaRecordSink_2_0</h1><h2>Description: </h2><p>Provides a service to write records to a Kaf [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/additionalDetails.html
new file mode 100644
index 0000000..1150e9c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ConsumeKafkaRecord</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+            for data using KafkaConsumer API available with Kafka 2.6. When a message is received
+            from Kafka, the message will be deserialized using the configured Record Reader, and then
+            written to a FlowFile by serializing the message with the configured Record Writer.
+        </p>
+
+        <h2>Consumer Partition Assignment</h2>
+        <p>
+            By default, this processor will subscribe to one or more Kafka topics in such a way that the topics to consume from are randomly
+            assigned to the nodes in the NiFi cluster. Consider a scenario where a single Kafka topic has 8 partitions and the consuming
+            NiFi cluster has 3 nodes. In this scenario, Node 1 may be assigned partitions 0, 1, and 2. Node 2 may be assigned partitions 3, 4, and 5.
+            Node 3 will then be assigned partitions 6 and 7.
+        </p>
+
+        <p>
+            In this scenario, if Node 3 somehow fails or stops pulling data from Kafka, partitions 6 and 7 may then be reassigned to the other two nodes.
+            For most use cases, this is desirable. It provides fault tolerance and allows the remaining nodes to pick up the slack. However, there are cases
+            where this is undesirable.
+        </p>
+
+        <p>
+            One such case is when using NiFi to consume Change Data Capture (CDC) data from Kafka. Consider again the above scenario. Consider that Node 3
+            has pulled 1,000 messages from Kafka but has not yet delivered them to their final destination. NiFi is then stopped and restarted, and that takes
+            15 minutes to complete. In the meantime, Partitions 6 and 7 have been reassigned to the other nodes. Those nodes then proceeded to pull data from
+            Kafka and deliver it to the desired destination. After 15 minutes, Node 3 rejoins the cluster and then continues to deliver its 1,000 messages that
+            it has already pulled from Kafka to the destination system. Now, those records have been delivered out of order.
+        </p>
+
+        <p>
+            The solution for this, then, is to assign partitions statically instead of dynamically. In this way, we can assign Partitions 6 and 7 to Node 3 specifically.
+            Then, if Node 3 is restarted, the other nodes will not pull data from Partitions 6 and 7. The data will remain queued in Kafka until Node 3 is restarted. By
+            using this approach, we can ensure that the data that already was pulled can be processed (assuming First In First Out Prioritizers are used) before newer messages
+            are handled.
+        </p>
+
+        <p>
+            In order to provide a static mapping of node to Kafka partition(s), one or more user-defined properties must be added using the naming scheme
+            <code>partitions.&lt;hostname&gt;</code> with the value being a comma-separated list of Kafka partitions to use. For example,
+            <code>partitions.nifi-01=0, 3, 6, 9</code>, <code>partitions.nifi-02=1, 4, 7, 10</code>, and <code>partitions.nifi-03=2, 5, 8, 11</code>.
+            The hostname that is used can be the fully qualified hostname, the "simple" hostname, or the IP address. There must be an entry for each node in
+            the cluster, or the Processor will become invalid. If it is desirable for a node to not have any partitions assigned to it, a Property may be
+            added for the hostname with an empty string as the value.
+        </p>
+
+        <p>
+            NiFi cannot readily validate that all Partitions have been assigned before the Processor is scheduled to run. However, it can validate that no
+            partitions have been skipped. As such, if partitions 0, 1, and 3 are assigned but not partition 2, the Processor will not be valid. However,
+            if partitions 0, 1, and 2 are assigned, the Processor will become valid, even if there are 4 partitions on the Topic. When the Processor is
+            started, the Processor will immediately start to fail, logging errors, and avoid pulling any data until the Processor is updated to account
+            for all partitions. Once running, if the number of partitions is changed, the Processor will continue to run but not pull data from the newly
+            added partitions. Once stopped, it will begin to error until all partitions have been assigned. Additionally, if partitions that are assigned
+            do not exist (e.g., partitions 0, 1, 2, 3, 4, 5, 6, and 7 are assigned, but the Topic has only 4 partitions), then the Processor will begin
+            to log errors on startup and will not pull data.
+        </p>
+
+        <p>
+            In order to use a static mapping of Kafka partitions, the "Topic Name Format" must be set to "names" rather than "pattern." Additionally, all
+            Topics that are to be consumed must have the same number of partitions. If multiple Topics are to be consumed and have a different number of
+            partitions, multiple Processors must be used so that each Processor consumes only from Topics with the same number of partitions.
+        </p>
+
+
+        <h2>Security Configuration:</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+        <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+        <pre>
+    SSL://host.name:port
+            </pre>
+        In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+        In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate.
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+        <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : com.sun.security.auth.module.Krb5LoginModule required
+                                        useKeyTab=true
+                                        storeKey=true
+                                        keyTab="/path/to/nifi.keytab"
+                                        serviceName="kafka"
+                                        principal="nifi@YOURREALM.COM";
+            </pre>
+        </ol>
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SCRAM, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+        </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+        <li>specify the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+        <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <p>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/index.html
new file mode 100644
index 0000000..6c42599
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafkaRecord_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafkaRecord_2_6</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka sp [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/additionalDetails.html
new file mode 100644
index 0000000..be2f380
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>ConsumeKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+            for data using KafkaConsumer API available with Kafka 2.6. When a message is received
+            from Kafka, this Processor emits a FlowFile where the content of the FlowFile is the value
+            of the Kafka message.
+        </p>
+
+        <h2>Consumer Partition Assignment</h2>
+        <p>
+            By default, this processor will subscribe to one or more Kafka topics in such a way that the topics to consume from are randomly
+            assigned to the nodes in the NiFi cluster. Consider a scenario where a single Kafka topic has 8 partitions and the consuming
+            NiFi cluster has 3 nodes. In this scenario, Node 1 may be assigned partitions 0, 1, and 2. Node 2 may be assigned partitions 3, 4, and 5.
+            Node 3 will then be assigned partitions 6 and 7.
+        </p>
+
+        <p>
+            In this scenario, if Node 3 somehow fails or stops pulling data from Kafka, partitions 6 and 7 may then be reassigned to the other two nodes.
+            For most use cases, this is desirable. It provides fault tolerance and allows the remaining nodes to pick up the slack. However, there are cases
+            where this is undesirable.
+        </p>
+
+        <p>
+            One such case is when using NiFi to consume Change Data Capture (CDC) data from Kafka. Consider again the above scenario. Consider that Node 3
+            has pulled 1,000 messages from Kafka but has not yet delivered them to their final destination. NiFi is then stopped and restarted, and that takes
+            15 minutes to complete. In the meantime, Partitions 6 and 7 have been reassigned to the other nodes. Those nodes then proceeded to pull data from
+            Kafka and deliver it to the desired destination. After 15 minutes, Node 3 rejoins the cluster and then continues to deliver its 1,000 messages that
+            it has already pulled from Kafka to the destination system. Now, those records have been delivered out of order.
+        </p>
+
+        <p>
+            The solution for this, then, is to assign partitions statically instead of dynamically. In this way, we can assign Partitions 6 and 7 to Node 3 specifically.
+            Then, if Node 3 is restarted, the other nodes will not pull data from Partitions 6 and 7. The data will remain queued in Kafka until Node 3 is restarted. By
+            using this approach, we can ensure that the data that already was pulled can be processed (assuming First In First Out Prioritizers are used) before newer messages
+            are handled.
+        </p>
+
+        <p>
+            In order to provide a static mapping of node to Kafka partition(s), one or more user-defined properties must be added using the naming scheme
+            <code>partitions.&lt;hostname&gt;</code> with the value being a comma-separated list of Kafka partitions to use. For example,
+            <code>partitions.nifi-01=0, 3, 6, 9</code>, <code>partitions.nifi-02=1, 4, 7, 10</code>, and <code>partitions.nifi-03=2, 5, 8, 11</code>.
+            The hostname that is used can be the fully qualified hostname, the "simple" hostname, or the IP address. There must be an entry for each node in
+            the cluster, or the Processor will become invalid. If it is desirable for a node to not have any partitions assigned to it, a Property may be
+            added for the hostname with an empty string as the value.
+        </p>
+
+        <p>
+            NiFi cannot readily validate that all Partitions have been assigned before the Processor is scheduled to run. However, it can validate that no
+            partitions have been skipped. As such, if partitions 0, 1, and 3 are assigned but not partition 2, the Processor will not be valid. However,
+            if partitions 0, 1, and 2 are assigned, the Processor will become valid, even if there are 4 partitions on the Topic. When the Processor is
+            started, the Processor will immediately start to fail, logging errors, and avoid pulling any data until the Processor is updated to account
+            for all partitions. Once running, if the number of partitions is changed, the Processor will continue to run but not pull data from the newly
+            added partitions. Once stopped, it will begin to error until all partitions have been assigned. Additionally, if partitions that are assigned
+            do not exist (e.g., partitions 0, 1, 2, 3, 4, 5, 6, and 7 are assigned, but the Topic has only 4 partitions), then the Processor will begin
+            to log errors on startup and will not pull data.
+        </p>
+
+        <p>
+            In order to use a static mapping of Kafka partitions, the "Topic Name Format" must be set to "names" rather than "pattern." Additionally, all
+            Topics that are to be consumed must have the same number of partitions. If multiple Topics are to be consumed and have a different number of
+            partitions, multiple Processors must be used so that each Processor consumes only from Topics with the same number of partitions.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+        <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+        <pre>
+    SSL://host.name:port
+            </pre>
+        In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+        In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate.
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+        <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : com.sun.security.auth.module.Krb5LoginModule required
+                                        useKeyTab=true
+                                        storeKey=true
+                                        keyTab="/path/to/nifi.keytab"
+                                        serviceName="kafka"
+                                        principal="nifi@YOURREALM.COM";
+            </pre>
+        </ol>
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SCRAM, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+        </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+        <li>specify the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+        <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <p>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+        <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/index.html
new file mode 100644
index 0000000..9193303
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafka_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafka_2_6</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka specifically b [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/additionalDetails.html
new file mode 100644
index 0000000..7cda394
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/additionalDetails.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PublishKafkaRecord</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor puts the contents of a FlowFile to a Topic in
+            <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+            with Kafka 2.6 API. The contents of the incoming FlowFile will be read using the
+            configured Record Reader. Each record will then be serialized using the configured
+            Record Writer, and this serialized form will be the content of a Kafka message.
+            This message is optionally assigned a key by using the &lt;Kafka Key&gt; Property.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+            <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+            <pre>
+    SSL://host.name:port
+            </pre>
+            In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+            In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+            <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+            <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+            <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SSL, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/index.html
new file mode 100644
index 0000000..9cf1712
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafkaRecord_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafkaRecord_2_6</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as in [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/additionalDetails.html
new file mode 100644
index 0000000..177fff9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/additionalDetails.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PublishKafka</title>
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <h2>Description</h2>
+        <p>
+            This Processor puts the contents of a FlowFile to a Topic in
+            <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+            with Kafka 2.6 API. The content of a FlowFile becomes the contents of a Kafka message.
+            This message is optionally assigned a key by using the &lt;Kafka Key&gt; Property.
+        </p>
+
+        <p>
+            The Processor allows the user to configure an optional Message Demarcator that
+            can be used to send many messages per FlowFile. For example, a <i>\n</i> could be used
+            to indicate that the contents of the FlowFile should be used to send one message
+            per line of text. It also supports multi-char demarcators (e.g., 'my custom demarcator').
+            If the property is not set, the entire contents of the FlowFile
+            will be sent as a single message. When using the demarcator, if some messages are
+            successfully sent but other messages fail to send, the resulting FlowFile will be
+            considered a failed FlowFile and will have additional attributes to that effect.
+            One of such attributes is 'failed.last.idx' which indicates the index of the last message
+            that was successfully ACKed by Kafka. (if no demarcator is used the value of this index will be -1).
+            This will allow PublishKafka to only re-send un-ACKed messages on the next re-try.
+        </p>
+
+
+        <h2>Security Configuration</h2>
+        <p>
+            The Security Protocol property allows the user to specify the protocol for communicating
+            with the Kafka broker. The following sections describe each of the protocols in further detail.
+        </p>
+        <h3>PLAINTEXT</h3>
+        <p>
+            This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+            In order to use this option the broker must be configured with a listener of the form:
+            <pre>
+    PLAINTEXT://host.name:port
+            </pre>
+        </p>
+        <h3>SSL</h3>
+        <p>
+            This option provides an encrypted connection to the broker, with optional client authentication. In order
+            to use this option the broker must be configured with a listener of the form:
+            <pre>
+    SSL://host.name:port
+            </pre>
+            In addition, the processor must have an SSL Context Service selected.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+            not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+            a truststore containing the public key of the certificate authority used to sign the broker's key.
+        </p>
+        <p>
+            If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+            In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+            a truststore as described above.
+        </p>
+        <h3>SASL_PLAINTEXT</h3>
+        <p>
+            This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_PLAINTEXT://host.name:port
+            </pre>
+            In addition, the Kerberos Service Name must be specified in the processor.
+        </p>
+        <h4>SASL_PLAINTEXT - GSSAPI</h4>
+        <p>
+            If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+            JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+            NiFi's bootstrap.conf, such as:
+            <pre>
+    java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+        </p>
+        <p>
+            An example of the JAAS config file would be the following:
+            <pre>
+    KafkaClient {
+        com.sun.security.auth.module.Krb5LoginModule required
+        useKeyTab=true
+        storeKey=true
+        keyTab="/path/to/nifi.keytab"
+        serviceName="kafka"
+        principal="nifi@YOURREALM.COM";
+    };
+            </pre>
+        <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+        </p>
+        <p>
+            Alternatively, the JAAS
+            configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+            directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+            will take precedence over the java.security.auth.login.config system property.
+        </p>
+        <h4>SASL_PLAINTEXT - PLAIN</h4>
+        <p>
+            If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+            be the following:
+            <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.plain.PlainLoginModule required
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        </p>
+        <p>
+            <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+            the username and password unencrypted.
+        </p>
+        <p>
+            <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <p>
+            <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+            it visible to components in other NARs that may access the providers. There is currently a known issue
+            where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+        </p>
+
+        <h4>SASL_PLAINTEXT - SCRAM</h4>
+        <p>
+            If the SASL mechanism is SSL, then client must provide a JAAS configuration to authenticate, but
+            the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+            be the following:
+        <pre>
+    KafkaClient {
+      org.apache.kafka.common.security.scram.ScramLoginModule
+      username="nifi"
+      password="nifi-password";
+    };
+            </pre>
+
+        The JAAS configuration can be provided by either of below ways
+        <ol type="1">
+            <li>specify the java.security.auth.login.config system property in
+                NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+            <pre>
+                java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+            </pre>
+            <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+            <pre>
+                sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+                                        username="nifi"
+                                        password="nifi-password";
+            </pre>
+            <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.xml.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+        </ol>
+        <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+        </p>
+        <h3>SASL_SSL</h3>
+        <p>
+            This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+            option the broker must be configured with a listener of the form:
+            <pre>
+    SASL_SSL://host.name:port
+            </pre>
+        </p>
+        <p>
+            See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+            depending on the SASL mechanism (GSSAPI or PLAIN).
+        </p>
+        <p>
+            See the SSL section for a description of how to configure the SSL Context Service based on the
+            ssl.client.auth property.
+        </p>
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/index.html
new file mode 100644
index 0000000..068cafb
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafka_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafka_2_6</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as a message to A [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_6/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_6/index.html
new file mode 100644
index 0000000..5862a50
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kafka-2-6-nar/1.16.3/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KafkaRecordSink_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KafkaRecordSink_2_6</h1><h2>Description: </h2><p>Provides a service to write records to a Kaf [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-credentials-service-nar/1.16.3/org.apache.nifi.kerberos.KeytabCredentialsService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-credentials-service-nar/1.16.3/org.apache.nifi.kerberos.KeytabCredentialsService/index.html
new file mode 100644
index 0000000..3e7700f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-credentials-service-nar/1.16.3/org.apache.nifi.kerberos.KeytabCredentialsService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KeytabCredentialsService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KeytabCredentialsService</h1><h2>Description: </h2><p>Provides a mechanism for specifyin [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosKeytabUserService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosKeytabUserService/index.html
new file mode 100644
index 0000000..b62df98
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosKeytabUserService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KerberosKeytabUserService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KerberosKeytabUserService</h1><h2>Description: </h2><p>Provides a mechanism for creatin [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosPasswordUserService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosPasswordUserService/index.html
new file mode 100644
index 0000000..c8550ac
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosPasswordUserService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KerberosPasswordUserService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KerberosPasswordUserService</h1><h2>Description: </h2><p>Provides a mechanism for cre [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosTicketCacheUserService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosTicketCacheUserService/index.html
new file mode 100644
index 0000000..3248fa6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kerberos-user-service-nar/1.16.3/org.apache.nifi.kerberos.KerberosTicketCacheUserService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KerberosTicketCacheUserService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KerberosTicketCacheUserService</h1><h2>Description: </h2><p>Provides a mechanism f [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.controller.kudu.KuduLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.controller.kudu.KuduLookupService/index.html
new file mode 100644
index 0000000..c45620b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.controller.kudu.KuduLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KuduLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KuduLookupService</h1><h2>Description: </h2><p>Lookup a record from Kudu Server associated with [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.processors.kudu.PutKudu/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.processors.kudu.PutKudu/additionalDetails.html
new file mode 100644
index 0000000..d3fa2e3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.processors.kudu.PutKudu/additionalDetails.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>PutKudu</title>
+
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+        <!-- Processor Documentation ================================================== -->
+        <h2>Description:</h2>
+        <p>
+            This processor writes Records to a Kudu table. 
+            
+            A Record Reader must be supplied to read the records from the FlowFile.
+            The schema supplied to the Record Reader is used to match fields in the Record to the columns of the Kudu table.
+            See the <a href='additionalDetails.html#tableSchema'>Table Schema</a> section for more.
+        </p>
+
+        <h3>Table Name</h3>
+        <p>When Hive MetaStore integration is enabled for Impala/Kudu, do not use the "impala::" syntax for the table name. Simply use the Hive "dbname.tablename" syntax.</p>
+
+        <p>
+            For example, without HMS integration, you might use
+        </p>
+        <code>
+            <pre>
+                Table Name: impala::default.testtable
+            </pre>
+        </code>
+        <p>
+            With HMS integration, you would simply use
+        </p>
+        <code>
+            <pre>
+                Table Name: default.testtable
+            </pre>
+        </code>
+
+
+        <h3 name='tableSchema'>Table Schema</h3>
+
+        <p>
+            When writing to Kudu, NiFi must map the fields from the Record to the columns of the Kudu table. It does this by acquiring the schema of the table from Kudu and the schema
+            provided by the Record Reader. It can now compare the Record field names against the Kudu table column names. Additionally, it also compares the field and colunm types, to
+            apply the appropriate type conversions.
+        </p>
+
+        <p>
+            For example, assuming you have the following data:
+        </p>
+
+        <code>
+            <pre>
+                {
+                    "forename":"Jessica",
+                    "surname":"Smith",
+                    "employee_id":123456789
+                }
+            </pre>
+        </code>
+
+        <p>
+            With the following schema in the Record Reader:
+        </p>
+
+        <code>
+            <pre>
+                {
+                    "type": "record",
+                    "namespace": "nifi",
+                    "name": "employee",
+                    "fields": [
+                        { "name": "forename", "type": "string" },
+                        { "name": "surname", "type": "string" },
+                        { "name": "employee_id", "type": "long" }
+                    ]
+                }
+            </pre>
+        </code>
+
+        <p>
+           With a Kudu table created via Impala using the following create table:
+        </p>
+
+        <code>
+            <pre>
+                CREATE TABLE employees
+                (
+                forename STRING,
+                surname STRING,
+                employee_id BIGINT,
+                PRIMARY KEY(employee_id)
+                )
+                PARTITION BY HASH PARTITIONS 16
+                STORED AS KUDU; 
+            </pre>
+        </code>
+
+           <p>NiFi will acquire the table schema from Kudu, so it knows the column names and types. (e.g. forename STRING, surname STRING, employee_id BIGINT)
+           Then, it matches the Record field names against the Kudu column names (e.g. record forename -> column forename, etc.)
+           Next, it matches the Record data types to the column data types. See the <a href='additionalDetails.html#dataTypes'>Data Types</a> section for more.</p>
+
+           <p>Where there is deviation in Record schema and Table schema, there is two existing options.</p>
+
+           <p>Firstly, the <b>Lowercase Field Names</b> option allows NiFi to handle differences in casing.
+           For example, if your Kudu columns were FORENAME, SURNAME and EMPLOYEE_ID these would not match the Record Schema above, as they are case senstive.
+           This option would simply convert the names to lowercase for the purpose of comparison. It <b>does not</b> change the Kudu table schema.</p>
+
+           <p>Secondly, the <b>Handle Schema Drift</b> options allows for un-matched fields to be added to the table schema. This <b>does</b> modify the Kudu table schema.
+           For example, if we add a "dateOfBirth" field to the above data & record schema examples, these would not map to a column in the Kudu table.
+           With this option enabled, NiFi would modify the Kudu table to add a new column called "dateOfBirth" and then insert the Record.</p>
+
+        
+        
+        <h3 name='dataTypes'>Data Types</h3>
+        <p>NiFi data types are mapped to the following Kudu types:</p>
+        <table>
+            <tr>
+                <th>NiFi Type</th>
+                <th>Kudu Type</th>
+            </tr>
+            <tr>
+                <td>BOOLEAN</td>
+                <td>BOOL</td>
+            </tr>
+            <tr>
+                <td>BYTE</td>
+                <td>INT8</td>
+            </tr>
+            <tr>
+                <td>SHORT</td>
+                <td>INT16</td>
+            </tr>
+            <tr>
+                <td>INT</td>
+                <td>INT32</td>
+            </tr>
+            <tr>
+                <td>LONG</td>
+                <td>INT64</td>
+            </tr>
+            <tr>
+                <td>FLOAT</td>
+                <td>FLOAT</td>
+            </tr>
+            <tr>
+                <td>DOUBLE</td>
+                <td>DOUBLE</td>
+            </tr>
+            <tr>
+                <td>DECIMAL</td>
+                <td>DECIMAL</td>
+            </tr>
+            <tr>
+                <td>TIMESTAMP</td>
+                <td>UNIXTIME_MICROS</td>
+            </tr>
+            <tr>
+                <td>STRING</td>
+                <td>STRING</td>
+            </tr>
+            <tr>
+                <td>CHAR</td>
+                <td>STRING</td>
+            </tr>
+        </table>
+
+    </body>
+</html>
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.processors.kudu.PutKudu/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.processors.kudu.PutKudu/index.html
new file mode 100644
index 0000000..e8552a6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-kudu-nar/1.16.3/org.apache.nifi.processors.kudu.PutKudu/index.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutKudu</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutKudu</h1><h2>Description: </h2><p>Reads records from an incoming FlowFile using the provided Record Re [...]
+Valid values are: INSERT, INSERT_IGNORE, UPSERT, UPDATE, DELETE, UPDATE_IGNORE, DELETE_IGNORE. This Property will be ignored if the &lt;Operation RecordPath&gt; property is set.<br/><strong>Supports Expression Language: true (will be evaluated using flow file attributes and variable registry)</strong></td></tr><tr><td id="name"><strong>Flush Mode</strong></td><td id="default-value">AUTO_FLUSH_BACKGROUND</td><td id="allowable-values"><ul><li>AUTO_FLUSH_SYNC</li><li>AUTO_FLUSH_BACKGROUND</ [...]
+AUTO_FLUSH_SYNC: the call returns when the operation is persisted, else it throws an exception.
+AUTO_FLUSH_BACKGROUND: the call returns when the operation has been added to the buffer. This call should normally perform only fast in-memory operations but it may have to wait when the buffer is full and there's another buffer being flushed.
+MANUAL_FLUSH: the call returns when the operation has been added to the buffer, else it throws a KuduException if the buffer is full.</td></tr><tr><td id="name"><strong>FlowFiles per Batch</strong></td><td id="default-value">1</td><td id="allowable-values"></td><td id="description">The maximum number of FlowFiles to process in a single execution, between 1 - 100000. Depending on your memory size, and data size per row set an appropriate batch size for the number of FlowFiles to process p [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-language-translation-nar/1.16.3/org.apache.nifi.processors.yandex.YandexTranslate/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-language-translation-nar/1.16.3/org.apache.nifi.processors.yandex.YandexTranslate/index.html
new file mode 100644
index 0000000..e2f6950
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-language-translation-nar/1.16.3/org.apache.nifi.processors.yandex.YandexTranslate/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>YandexTranslate</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">YandexTranslate</h1><h2>Description: </h2><p>Translates content and attributes from one language  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.CSVRecordLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.CSVRecordLookupService/index.html
new file mode 100644
index 0000000..f9e4670
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.CSVRecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CSVRecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CSVRecordLookupService</h1><h2>Description: </h2><p>A reloadable CSV file-based lookup ser [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.DistributedMapCacheLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.DistributedMapCacheLookupService/index.html
new file mode 100644
index 0000000..7e63f85
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.DistributedMapCacheLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedMapCacheLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedMapCacheLookupService</h1><h2>Description: </h2><p>Allows to choose a [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.PropertiesFileLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.PropertiesFileLookupService/index.html
new file mode 100644
index 0000000..65fddf0
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.PropertiesFileLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PropertiesFileLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PropertiesFileLookupService</h1><h2>Description: </h2><p>A reloadable properties file [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.RestLookupService/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.RestLookupService/additionalDetails.html
new file mode 100644
index 0000000..4f0d4f9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.RestLookupService/additionalDetails.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>RestLookupService</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <h2>General</h2>
+    <p>This lookup service has the following optional lookup coordinate keys:</p>
+    <ul>
+        <li>request.method; defaults to 'get', valid values:
+            <ul>
+                <li>delete</li>
+                <li>get</li>
+                <li>post</li>
+                <li>put</li>
+            </ul>
+        </li>
+        <li>request.body; contains a string representing JSON, XML, etc. to be sent with any
+            of those methods except for "get".</li>
+        <li>mime.type; specifies media type of the request body, required when 'body' is passed.</li>
+        <li>*; any other keys can be configured to pass variables to resolve target URLs. See 'Dynamic URLs' section below.</li>
+    </ul>
+    <p>The record reader is used to consume the response of the REST service call and turn it into one or more records. The record path property
+    is provided to allow for a lookup path to either a nested record or a single point deep in the REST response. Note: a valid schema must be
+    built that encapsulates the REST response accurately in order for this service to work.</p>
+    <h2>Headers</h2>
+    <p>Headers are supported using dynamic properties. Just add a dynamic property and the name will be the header name and the value will be the value for the header. Expression language
+    powered by input from the variable registry is supported.</p>
+    <h2>Dynamic URLs</h2>
+    <p>The URL property supports expression language through the lookup key/value pairs configured on the component using this lookup service (e.g. LookupRecord processor). The configuration specified by the user will be passed
+    through to the expression language engine for evaluation. Note: flowfile attributes will be disregarded here for this property.</p>
+    <p>Ex. URL: <em>http://example.com/service/${user.name}/friend/${friend.id}</em>, combined with example record paths at LookupRecord processor:</p>
+    <ul>
+        <li>user.name => "/example/username"</li>
+        <li>friend.id => "/example/first_friend"</li>
+    </ul>
+    <p>Would dynamically produce an endpoint of <em>http://example.com/service/john.smith/friend/12345</em></p>
+
+    <h3>Using Variable Registry with URLs</h3>
+
+    <p>In addition to the lookup key/value pairs, Variable Registry can be referred from expression languages configured at the URL property.</p>
+    <p>Ex. URL: <em>http://${apiServerHostname}:${apiServerPort}/service/${user.name}/friend/${friend.id}</em>, combined with the previous example record paths, and variable registry:</p>
+    <ul>
+        <li>apiServerHostname => "test.example.com"</li>
+        <li>apiServerPort => "8080"</li>
+    </ul>
+    <p>Would dynamically produce an endpoint of <em>http://test.example.com:8080/service/john.smith/friend/12345</em></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.RestLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.RestLookupService/index.html
new file mode 100644
index 0000000..7b738fe
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.RestLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>RestLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">RestLookupService</h1><h2>Description: </h2><p>Use a REST service to look up values.</p><p><a h [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.SimpleCsvFileLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.SimpleCsvFileLookupService/index.html
new file mode 100644
index 0000000..1d3561f
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.SimpleCsvFileLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SimpleCsvFileLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SimpleCsvFileLookupService</h1><h2>Description: </h2><p>A reloadable CSV file-based lo [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.SimpleKeyValueLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.SimpleKeyValueLookupService/index.html
new file mode 100644
index 0000000..5031221
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.SimpleKeyValueLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SimpleKeyValueLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SimpleKeyValueLookupService</h1><h2>Description: </h2><p>Allows users to add key/valu [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.XMLFileLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.XMLFileLookupService/index.html
new file mode 100644
index 0000000..6199660
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.XMLFileLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>XMLFileLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">XMLFileLookupService</h1><h2>Description: </h2><p>A reloadable XML file-based lookup service [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.db.DatabaseRecordLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.db.DatabaseRecordLookupService/index.html
new file mode 100644
index 0000000..234892b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.db.DatabaseRecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DatabaseRecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DatabaseRecordLookupService</h1><h2>Description: </h2><p>A relational-database-based  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.db.SimpleDatabaseLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.db.SimpleDatabaseLookupService/index.html
new file mode 100644
index 0000000..6b8d54c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.db.SimpleDatabaseLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SimpleDatabaseLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SimpleDatabaseLookupService</h1><h2>Description: </h2><p>A relational-database-based  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.maxmind.IPLookupService/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.maxmind.IPLookupService/additionalDetails.html
new file mode 100644
index 0000000..cb85541
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.maxmind.IPLookupService/additionalDetails.html
@@ -0,0 +1,179 @@
+<!DOCTYPE html>
+<html lang="en">
+    <!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+    <head>
+        <meta charset="utf-8" />
+        <title>IPLookupService</title>
+
+        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+    </head>
+
+    <body>
+      <p>
+        The IPLookupService is powered by a MaxMind database and can return several different types of enrichment information
+        about a given IP address. Below is the schema of the Record that is returned by this service (in Avro Schema format).
+        The schema is for a single record that consists of several fields: <code>geo</code>, <code>isp</code>,
+        <code>domainName</code>, <code>connectionType</code>, and <code>anonymousIp</code>. Each of these fields is nullable
+        and will be populated only if the IP address that is searched for has the relevant information in the MaxMind database
+        and if the Controller Service is configured to return such information. Because each of the fields requires a separate
+        lookup in the database, it is advisable to retrieve only those fields that are of value.
+      </p>
+      
+<code>
+<pre>
+{
+  "name": "enrichmentRecord",
+  "namespace": "nifi",
+  "type": "record",
+  "fields": [
+    {
+      "name": "geo",
+      "type": ["null", {
+        "name": "cityGeo",
+        "type": "record",
+        "fields": [
+          { "name": "city", "type": ["null", "string"] },
+          { "name": "accuracy", "type": ["null", "int"], "doc": "The radius, in kilometers, around the given location, where the IP address is believed to be" },
+          { "name": "metroCode", "type": ["null", "int"] },
+          { "name": "timeZone", "type": ["null", "string"] },
+          { "name": "latitude", "type": ["null", "double"] },
+          { "name": "longitude", "type": ["null", "double"] },
+          { "name": "country", "type": ["null", {
+            "type": "record",
+            "name": "country",
+            "fields": [
+              { "name": "name", "type": "string" },
+              { "name": "isoCode", "type": "string" }
+            ]
+          }] },
+            { "name": "subdivisions", "type": {
+              "type": "array",
+              "items": {
+                "type": "record",
+                "name": "subdivision",
+                "fields": [
+                  { "name": "name", "type": "string" },
+                  { "name": "isoCode", "type": "string" }
+                ]
+              }
+            }
+          },
+          { "name": "continent", "type": ["null", "string"] },
+          { "name": "postalCode", "type": ["null", "string"] }
+        ]
+      }]
+    },
+    {
+      "name": "isp",
+      "type": ["null", {
+        "name": "ispEnrich",
+        "type": "record",
+        "fields": [
+          { "name": "name", "type": ["null", "string"] },
+          { "name": "organization", "type": ["null", "string"] },
+          { "name": "asn", "type": ["null", "int"] },
+          { "name": "asnOrganization", "type": ["null", "string"] }
+        ]
+      }]
+    },
+    {
+      "name": "domainName",
+      "type": ["null", "string"]
+    },
+    {
+      "name": "connectionType",
+      "type": ["null", "string"],
+      "doc": "One of 'Dialup', 'Cable/DSL', 'Corporate', 'Cellular'"
+    },
+    {
+      "name": "anonymousIp",
+      "type": ["null", {
+        "name": "anonymousIpType",
+        "type": "record",
+        "fields": [
+          { "name": "anonymous", "type": "boolean" },
+          { "name": "anonymousVpn", "type": "boolean" },
+          { "name": "hostingProvider", "type": "boolean" },
+          { "name": "publicProxy", "type": "boolean" },
+          { "name": "torExitNode", "type": "boolean" }
+        ]
+      }]
+    }
+  ]
+}
+</pre>
+</code>
+
+
+  <p>
+    While this schema is fairly complex, it is a single record with 5 fields. This makes it quite easy to update
+    an existing schema to allow for this record, by adding a new field to an existing schema and pasting in the schema
+    above as the type.
+  </p>
+  
+  <p>
+    For example, suppose that we have an existing schema that is as simple as:
+  </p>
+
+<pre>
+<code>
+<span style="color: #808080;">
+{
+  "name": "ipRecord",
+  "namespace": "nifi",
+  "type": "record",
+  "fields": [
+    { "name": "ip", "type": "string" }
+  ]
+}
+</span>
+</code>
+</pre>
+
+  <p>
+    Now, let's suppose that we want to add a new field named <code>enrichment</code> to the above schema.
+    Further, let's say that we want the new <code>enrichment</code> field to be nullable.
+    We can do so by copying and pasting our enrichment schema from above thus:
+  </p>
+
+<pre>
+<code>
+<span style="color: #808080;">
+{
+  "name": "ipRecord",
+  "namespace": "nifi",
+  "type": "record",
+  "fields": [
+    { "name": "ip", "type": "string" },</span><span style="color: #191970;">
+    { "name": "enrichment", "type": ["null",
+</span>
+
+      <span style="color: #000000">&lt;Paste Enrichment Schema Here&gt;</span>
+
+<span style="color: #191970;">
+    ]</span><span style="color: #808080;">
+    }
+  ]
+}
+</span>
+</code>
+</pre>
+
+
+
+
+ </body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.maxmind.IPLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.maxmind.IPLookupService/index.html
new file mode 100644
index 0000000..d16ea71
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-lookup-services-nar/1.16.3/org.apache.nifi.lookup.maxmind.IPLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>IPLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">IPLookupService</h1><h2>Description: </h2><p>A lookup service that provides several types of enri [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-metrics-reporting-nar/1.16.3/org.apache.nifi.metrics.reporting.reporter.service.GraphiteMetricReporterService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-metrics-reporting-nar/1.16.3/org.apache.nifi.metrics.reporting.reporter.service.GraphiteMetricReporterService/index.html
new file mode 100644
index 0000000..f25c0c4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-metrics-reporting-nar/1.16.3/org.apache.nifi.metrics.reporting.reporter.service.GraphiteMetricReporterService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GraphiteMetricReporterService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GraphiteMetricReporterService</h1><h2>Description: </h2><p>A controller service tha [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-metrics-reporting-nar/1.16.3/org.apache.nifi.metrics.reporting.task.MetricsReportingTask/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-metrics-reporting-nar/1.16.3/org.apache.nifi.metrics.reporting.task.MetricsReportingTask/index.html
new file mode 100644
index 0000000..d4e0aa3
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-metrics-reporting-nar/1.16.3/org.apache.nifi.metrics.reporting.task.MetricsReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>MetricsReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">MetricsReportingTask</h1><h2>Description: </h2><p>This reporting task reports a set of metri [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.DeleteMongo/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.DeleteMongo/additionalDetails.html
new file mode 100644
index 0000000..caa3282
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.DeleteMongo/additionalDetails.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>DeleteMongo</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor deletes from Mongo using a user-provided query that is provided in the body of a flowfile. It must
+    be a valid JSON document. The user has the option of deleting a single document or all documents that match the
+    criteria. That behavior can be configured using the related configuration property. In addition, the processor
+    can be configured to regard a failure to delete any documents as an error event, which would send the flowfile
+    with the query to the failure relationship.
+</p>
+<h3>Example Query</h3>
+<pre>
+{
+    "username": "john.smith",
+    "recipient": "jane.doe"
+}
+</pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.DeleteMongo/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.DeleteMongo/index.html
new file mode 100644
index 0000000..ffeada9
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.DeleteMongo/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteMongo</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteMongo</h1><h2>Description: </h2><p>Executes a delete query against a MongoDB collection. The qu [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongo/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongo/additionalDetails.html
new file mode 100644
index 0000000..d6b476d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongo/additionalDetails.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>GetMongo</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor runs queries against a MongoDB instance or cluster and writes the results to a flowfile. It allows
+    input, but can run standalone as well.
+</p>
+<h2>Specifying the Query</h2>
+<p>
+    The query can be specified in one of three ways:
+</p>
+<ul>
+    <li>Query configuration property.</li>
+    <li>Query Attribute configuration property.</li>
+    <li>FlowFile content.</li>
+</ul>
+<p>
+    If a value is specified in either of the configuration properties, it will not look in the FlowFile content for a
+    query.
+</p>
+<h2>Limiting/Shaping Results</h2>
+<p>
+    The following options for limiting/shaping results are available:
+</p>
+<ul>
+    <li>Limit - limit the number of results. This should not be confused with the "batch size" option which is a
+    setting for the underlying MongoDB driver to tell it how many items to retrieve in each poll of the server.</li>
+    <li>Sort - sort the result set. Requires a JSON document like <em>{ "someDate": -1 }</em></li>
+    <li>Projection - control which fields to return. Exampe, which would remove <em>_id</em>: <em>{ "_id": 0 }</em></li>
+</ul>
+<h2>Misc Options</h2>
+<p>
+    Results Per FlowFile, if set, creates a JSON array out of a batch of results and writes the result to the output.
+    Pretty Print, if enabled, will format the JSON data to be easy read by a human (ex. proper indentation of fields).
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongo/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongo/index.html
new file mode 100644
index 0000000..632c1c2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongo/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetMongo</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetMongo</h1><h2>Description: </h2><p>Creates FlowFiles from documents in MongoDB loaded by a user-speci [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongoRecord/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongoRecord/additionalDetails.html
new file mode 100644
index 0000000..2a686cf
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongoRecord/additionalDetails.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>GetMongoRecord</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor runs queries against a MongoDB instance or cluster and writes the results to a flowfile. It allows
+    input, but can run standalone as well. It is a record-aware version of the <em>GetMongo</em> processor.
+</p>
+<h2>Specifying the Query</h2>
+<p>
+    The query can be specified in one of three ways:
+</p>
+<ul>
+    <li>Query configuration property.</li>
+    <li>Query Attribute configuration property.</li>
+    <li>FlowFile content.</li>
+</ul>
+<p>
+    If a value is specified in either of the configuration properties, it will not look in the FlowFile content for a
+    query.
+</p>
+<h2>Limiting/Shaping Results</h2>
+<p>
+    The following options for limiting/shaping results are available:
+</p>
+<ul>
+    <li>Limit - limit the number of results. This should not be confused with the "batch size" option which is a
+        setting for the underlying MongoDB driver to tell it how many items to retrieve in each poll of the server.</li>
+    <li>Sort - sort the result set. Requires a JSON document like <em>{ "someDate": -1 }</em></li>
+    <li>Projection - control which fields to return. Exampe, which would remove <em>_id</em>: <em>{ "_id": 0 }</em></li>
+</ul>
+<h2>Misc Options</h2>
+<p>
+    Results Per FlowFile, if set, creates a JSON array out of a batch of results and writes the result to the output.
+    Pretty Print, if enabled, will format the JSON data to be easy read by a human (ex. proper indentation of fields).
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongoRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongoRecord/index.html
new file mode 100644
index 0000000..58efe7c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.GetMongoRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetMongoRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetMongoRecord</h1><h2>Description: </h2><p>A record-based version of GetMongo that uses the Recor [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongo/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongo/additionalDetails.html
new file mode 100644
index 0000000..54204df
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongo/additionalDetails.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutMongo</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor is a general purpose processor for inserting, upserting and updating MongoDB collections.
+</p>
+<h2>Inserting Documents</h2>
+<p>
+    Each flowfile is assumed to contain only a single MongoDB document to be inserted. The contents must be valid JSON.
+    The input the Mongo shell accepts should not be confused with valid JSON. It does not support batch writes at this time.
+</p>
+<h2>Updating and Upserting</h2>
+
+<h3>Update Modes</h3>
+<p>
+    There are two methods for choosing what gets written to a document when updating:
+</p>
+<ul>
+    <li>Whole document - the entire document is replaced with the contents of the flowfile.</li>
+    <li>With Operators Enabled - the document in the flowfile content will be assumed to have update operators such as
+    <em>$set</em> and will be used to update particular fields. The whole document will not be replaced.</li>
+</ul>
+
+<p>
+    There are two ways to update:
+</p>
+<ul>
+    <li>Update Key - use one or more keys from the document.</li>
+    <li>Update Query - use a totally separate query that is not derived from the document.</li>
+</ul>
+
+<h3>Update Key</h3>
+<p>
+    The update key method takes keys from the document and builds a query from them. It will attempt to parse the <em>_id</em>
+    field as an <em>ObjectID</em> type if that is one of the keys that is specified in the configuration field. Multiple keys
+    can be specified by separating them with commas. This configuration field supports Expression Language, so it can
+    derived in part or entirely from flowfile attributes.
+</p>
+
+<h3>Update Query</h3>
+<p>
+    The update query method takes a valid JSON document as its value and uses it to find one or more documents to update.
+    This field supports Expression Language, so it can be derived in part or entirely from flowfile attributes. It is possible,
+    for instance, to put an attribute named <em>update_query</em> on a flowfile and specify <em>${update_query}</em> in the
+    configuration field so it will load the value from the flowfile.
+</p>
+
+<h3>Upserts</h3>
+<p>
+    If the upsert mode is enabled, PutMongo will insert a new document that matches the search criteria (be it a user-supplied
+    query or one built from update keys) and give it the properties that are specified in the JSON document provided in the
+    flowfile content. This feature should be used carefully, as it can result in incomplete data being added to MongoDB.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongo/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongo/index.html
new file mode 100644
index 0000000..54a6a21
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongo/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutMongo</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutMongo</h1><h2>Description: </h2><p>Writes the contents of a FlowFile to MongoDB</p><p><a href="additi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongoRecord/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongoRecord/index.html
new file mode 100644
index 0000000..40ed3ff
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.PutMongoRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutMongoRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutMongoRecord</h1><h2>Description: </h2><p>This processor is a record-aware processor for inserti [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.RunMongoAggregation/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.RunMongoAggregation/additionalDetails.html
new file mode 100644
index 0000000..0774c78
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.RunMongoAggregation/additionalDetails.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>RunMongoAggregation</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor runs a MongoDB aggregation query based on user-defined settings. The
+    following is an example of such a query (and what the expected input looks like):
+</p>
+<pre>
+[{
+   "$project": {
+        "domain": 1
+    },
+    "$group": {
+         "_id": { "domain": "$domain" },
+         "total": {
+             "$sum": 1
+         }
+     }
+}]
+</pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.RunMongoAggregation/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.RunMongoAggregation/index.html
new file mode 100644
index 0000000..3bc9101
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.RunMongoAggregation/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>RunMongoAggregation</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">RunMongoAggregation</h1><h2>Description: </h2><p>A processor that runs an aggregation query w [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.DeleteGridFS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.DeleteGridFS/additionalDetails.html
new file mode 100644
index 0000000..b748755
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.DeleteGridFS/additionalDetails.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>DeleteGridFS</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor retrieves one or more files from GridFS. The query to execute can be either provided in the query
+    configuration parameter or generated from the value pulled from the filename configuration parameter. Upon successful
+    execution, it will append the query that was executed as an attribute on the flowfile that was processed.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.DeleteGridFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.DeleteGridFS/index.html
new file mode 100644
index 0000000..0bedeb8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.DeleteGridFS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteGridFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteGridFS</h1><h2>Description: </h2><p>Deletes a file from GridFS using a file name or a query.</ [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.FetchGridFS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.FetchGridFS/additionalDetails.html
new file mode 100644
index 0000000..279216c
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.FetchGridFS/additionalDetails.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>FetchGridFS</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor retrieves one or more files from GridFS. The query can be provided in one of three ways:
+</p>
+
+<ul>
+    <li>Query configuration parameter.</li>
+    <li>Built for you by configuring the filename parameter. (Note: this is just a filename, Mongo queries cannot be
+    embedded in the field).</li>
+    <li>Retrieving the query from the flowfile contents.</li>
+</ul>
+
+<p>
+    The processor can also be configured to either commit only once at the end of a fetch operation or after each file
+    that is retrieved. Multiple commits is generally only necessary when retrieving a lot of data from GridFS as measured
+    in total data size, not file count, to ensure that the disks NiFi is using are not overloaded.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.FetchGridFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.FetchGridFS/index.html
new file mode 100644
index 0000000..0f41934
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.FetchGridFS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchGridFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchGridFS</h1><h2>Description: </h2><p>Retrieves one or more files from a GridFS bucket by file nam [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.PutGridFS/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.PutGridFS/additionalDetails.html
new file mode 100644
index 0000000..62330dd
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.PutGridFS/additionalDetails.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>PutGridFS</title>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+    This processor puts a file with one or more user-defined metadata values into GridFS in the configured bucket. It
+    allows the user to define how big each file chunk will be during ingestion and provides some ability to intelligently
+    attempt to enforce file uniqueness using filename or hash values instead of just relying on a database index.
+</p>
+<h3>GridFS File Attributes</h3>
+<p>
+    <em>PutGridFS</em> allows for flowfile attributes that start with a configured prefix to be added to the GridFS
+    document. These can be very useful later when working with GridFS for providing metadata about a file.
+</p>
+<h3>Chunk Size</h3>
+<p>
+    GridFS splits up file into chunks within Mongo documents as the file is ingested into the database. The chunk size
+    configuration parameter configures the maximum size of each chunk. This field should be left at its default value
+    unless there is a specific business case to increase or decrease it.
+</p>
+<h3>Uniqueness Enforcement</h3>
+<p>
+    There are four operating modes:
+</p>
+<ul>
+    <li>No enforcement at the application level.</li>
+    <li>Enforce by unique file name.</li>
+    <li>Enforce by unique hash value.</li>
+    <li>Use both hash and file name.</li>
+</ul>
+<p>
+    The hash value by default is taken from the attribute <em>hash.value</em> which can be generated by configuring a
+    <em>HashContent</em> processor upstream of <em>PutGridFS</em>. Both this and the name option use a query on the existing
+    data to see if a file matching that criteria exists before attempting to write the flowfile contents.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.PutGridFS/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.PutGridFS/index.html
new file mode 100644
index 0000000..0bf5319
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.16.3/org.apache.nifi.processors.mongodb.gridfs.PutGridFS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutGridFS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutGridFS</h1><h2>Description: </h2><p>Writes a file to a GridFS bucket.</p><p><a href="additionalDetai [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-services-nar/1.16.3/org.apache.nifi.mongodb.MongoDBControllerService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-services-nar/1.16.3/org.apache.nifi.mongodb.MongoDBControllerService/index.html
new file mode 100644
index 0000000..e2b10f6
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-services-nar/1.16.3/org.apache.nifi.mongodb.MongoDBControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>MongoDBControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">MongoDBControllerService</h1><h2>Description: </h2><p>Provides a controller service that [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-services-nar/1.16.3/org.apache.nifi.mongodb.MongoDBLookupService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-services-nar/1.16.3/org.apache.nifi.mongodb.MongoDBLookupService/index.html
new file mode 100644
index 0000000..80d399d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-services-nar/1.16.3/org.apache.nifi.mongodb.MongoDBLookupService/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>MongoDBLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">MongoDBLookupService</h1><h2>Description: </h2><p>Provides a lookup service based around Mon [...]
+will be added to a query as-is. For example, if you specify the two keys, 
+user and email, the resulting query will be { "user": "tester", "email": "tester@test.com" }.
+The query is limited to the first result (findOne in the Mongo documentation). If no "Lookup Value Field" is specified then the entire MongoDB result document minus the _id field will be returned as a record.</p><h3>Tags: </h3><p>mongo, mongodb, lookup, record</p><h3>Properties: </h3><p>In the list below, the names of required properties appear in <strong>bold</strong>. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.ConsumeMQTT/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.ConsumeMQTT/additionalDetails.html
new file mode 100644
index 0000000..7d36849
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.ConsumeMQTT/additionalDetails.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ConsumeMQTT</title>
+
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+    <p>The MQTT messages are always being sent to subscribers on a topic regardless of how frequently the processor is scheduled to run. 
+    If the 'Run Schedule' is significantly behind the rate at which the messages are arriving to this processor, then a back up can occur 
+    in the internal queue of this processor. Each time the processor is scheduled, the messages in the internal queue will be written to 
+    FlowFiles. In case the internal queue is full, the MQTT client will try for up to 1 second to add the message into the internal queue. 
+    If the internal queue is still full after this time, an exception saying that 'The subscriber queue is full' would be thrown, the 
+    message would be dropped and the client would be disconnected. In case the QoS property is set to 0, the message would be lost. In 
+    case the QoS property is set to 1 or 2, the message will be received after the client reconnects.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.ConsumeMQTT/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.ConsumeMQTT/index.html
new file mode 100644
index 0000000..bbd9198
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.ConsumeMQTT/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeMQTT</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeMQTT</h1><h2>Description: </h2><p>Subscribes to a topic and receives messages from an MQTT bro [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.PublishMQTT/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.PublishMQTT/index.html
new file mode 100644
index 0000000..cc72411
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-mqtt-nar/1.16.3/org.apache.nifi.processors.mqtt.PublishMQTT/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishMQTT</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishMQTT</h1><h2>Description: </h2><p>Publishes a message to an MQTT topic</p><h3>Tags: </h3><p>pu [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-network-processors-nar/1.16.3/org.apache.nifi.processors.network.ParseNetflowv5/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-network-processors-nar/1.16.3/org.apache.nifi.processors.network.ParseNetflowv5/additionalDetails.html
new file mode 100644
index 0000000..728385d
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-network-processors-nar/1.16.3/org.apache.nifi.processors.network.ParseNetflowv5/additionalDetails.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+    -->
+<head>
+<meta charset="utf-8" />
+<title>Netflowv5Parser</title>
+<link rel="stylesheet" href="../../../../../css/component-usage.css"
+	type="text/css" />
+</head>
+
+<body>
+	<p>
+		Netflowv5Parser processor parses the ingress netflowv5 datagram format
+		and transfers it either as flowfile attributes or JSON object.
+		Netflowv5 format has predefined schema named "template" for parsing
+		the netflowv5 record. More information:&nbsp;<a title="RFC-netflowv5"
+			href="https://www.cisco.com/c/en/us/td/docs/net_mgmt/netflow_collection_engine/3-6/user/guide/format.html">RFC-netflowv5</a>
+	</p>
+	<h2>Netflowv5 JSON Output Schema</h2>
+	<pre>{
+  "port": int,
+  "format": string,
+  "header": {
+    "version": int,
+    "count": int,
+    "sys_uptime": long,
+    "unix_secs": long,
+    "unix_nsecs": long,
+    "flow_sequence": long,
+    "engine_type": short,
+    "engine_id": short,
+    "sampling_interval": int
+  },
+  "record": {
+    "srcaddr": string,
+    "dstaddr": string,
+    "nexthop": string,
+    "input": int,
+    "output": int,
+    "dPkts": long,
+    "dOctets": long,
+    "first": long,
+    "last": long,
+    "srcport": int,
+    "dstport": int,
+    "pad1": short,
+    "tcp_flags": short,
+    "prot": short,
+    "tos": short,
+    "src_as": int,
+    "dst_as": int,
+    "src_mask": short,
+    "dst_mask": short,
+    "pad2": int
+  }
+}
+</pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-network-processors-nar/1.16.3/org.apache.nifi.processors.network.ParseNetflowv5/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-network-processors-nar/1.16.3/org.apache.nifi.processors.network.ParseNetflowv5/index.html
new file mode 100644
index 0000000..ef35389
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-network-processors-nar/1.16.3/org.apache.nifi.processors.network.ParseNetflowv5/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ParseNetflowv5</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ParseNetflowv5</h1><h2>Description: </h2><p>Parses netflowv5 byte ingest and add to NiFi flowfile  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-oauth2-provider-nar/1.16.3/org.apache.nifi.oauth2.OAuth2TokenProviderImpl/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-oauth2-provider-nar/1.16.3/org.apache.nifi.oauth2.OAuth2TokenProviderImpl/index.html
new file mode 100644
index 0000000..372dc48
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-oauth2-provider-nar/1.16.3/org.apache.nifi.oauth2.OAuth2TokenProviderImpl/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>OAuth2TokenProviderImpl</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">OAuth2TokenProviderImpl</h1><h2>Deprecation notice: </h2><p>Please be aware this processo [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-oauth2-provider-nar/1.16.3/org.apache.nifi.oauth2.StandardOauth2AccessTokenProvider/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-oauth2-provider-nar/1.16.3/org.apache.nifi.oauth2.StandardOauth2AccessTokenProvider/index.html
new file mode 100644
index 0000000..507cddf
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-oauth2-provider-nar/1.16.3/org.apache.nifi.oauth2.StandardOauth2AccessTokenProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardOauth2AccessTokenProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardOauth2AccessTokenProvider</h1><h2>Description: </h2><p>Provides OAuth 2 [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.parquet.ParquetReader/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.parquet.ParquetReader/index.html
new file mode 100644
index 0000000..24a32b4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.parquet.ParquetReader/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ParquetReader</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ParquetReader</h1><h2>Description: </h2><p>Parses Parquet data and returns each Parquet record as a [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.parquet.ParquetRecordSetWriter/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.parquet.ParquetRecordSetWriter/index.html
new file mode 100644
index 0000000..146902b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.parquet.ParquetRecordSetWriter/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ParquetRecordSetWriter</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ParquetRecordSetWriter</h1><h2>Description: </h2><p>Writes the contents of a RecordSet in  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.ConvertAvroToParquet/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.ConvertAvroToParquet/index.html
new file mode 100644
index 0000000..5a6ae9b
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.ConvertAvroToParquet/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConvertAvroToParquet</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConvertAvroToParquet</h1><h2>Description: </h2><p>Converts Avro records into Parquet file fo [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.FetchParquet/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.FetchParquet/index.html
new file mode 100644
index 0000000..2272df2
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.FetchParquet/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchParquet</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchParquet</h1><h2>Description: </h2><p>Reads from a given Parquet file and writes records to the  [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.PutParquet/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.PutParquet/index.html
new file mode 100644
index 0000000..2a4fbc8
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-parquet-nar/1.16.3/org.apache.nifi.processors.parquet.PutParquet/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutParquet</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutParquet</h1><h2>Description: </h2><p>Reads records from an incoming FlowFile using the provided Rec [...]
+
+This property has been deprecated, and has no effect on processing. Relogins now occur automatically.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Additional Classpath Resources</td><td></td><td id="allowable-values"></td><td id="description">A comma-separated list of paths to files and/or directories that will be added to the classpath and used for loading native libraries. When specifying a directory [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.DecryptContentPGP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.DecryptContentPGP/index.html
new file mode 100644
index 0000000..5ac7f11
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.DecryptContentPGP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DecryptContentPGP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DecryptContentPGP</h1><h2>Description: </h2><p>Decrypt contents of OpenPGP messages. Using the  [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.EncryptContentPGP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.EncryptContentPGP/index.html
new file mode 100644
index 0000000..40d7c73
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.EncryptContentPGP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>EncryptContentPGP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">EncryptContentPGP</h1><h2>Description: </h2><p>Encrypt contents using OpenPGP. The processor re [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.SignContentPGP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.SignContentPGP/index.html
new file mode 100644
index 0000000..eaf9f0e
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.SignContentPGP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SignContentPGP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SignContentPGP</h1><h2>Description: </h2><p>Sign content using OpenPGP Private Keys</p><h3>Tags: < [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.VerifyContentPGP/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.VerifyContentPGP/index.html
new file mode 100644
index 0000000..621cc71
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-nar/1.16.3/org.apache.nifi.processors.pgp.VerifyContentPGP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>VerifyContentPGP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">VerifyContentPGP</h1><h2>Description: </h2><p>Verify signatures using OpenPGP Public Keys</p><h3 [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-service-nar/1.16.3/org.apache.nifi.pgp.service.standard.StandardPGPPrivateKeyService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-service-nar/1.16.3/org.apache.nifi.pgp.service.standard.StandardPGPPrivateKeyService/index.html
new file mode 100644
index 0000000..091b8f4
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-service-nar/1.16.3/org.apache.nifi.pgp.service.standard.StandardPGPPrivateKeyService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardPGPPrivateKeyService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardPGPPrivateKeyService</h1><h2>Description: </h2><p>PGP Private Key Service pr [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-service-nar/1.16.3/org.apache.nifi.pgp.service.standard.StandardPGPPublicKeyService/index.html b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-service-nar/1.16.3/org.apache.nifi.pgp.service.standard.StandardPGPPublicKeyService/index.html
new file mode 100644
index 0000000..6563c79
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-pgp-service-nar/1.16.3/org.apache.nifi.pgp.service.standard.StandardPGPPublicKeyService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardPGPPublicKeyService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardPGPPublicKeyService</h1><h2>Description: </h2><p>PGP Public Key Service provi [...]
\ No newline at end of file
diff --git a/docs/nifi-docs/components/org.apache.nifi/nifi-poi-nar/1.16.3/org.apache.nifi.processors.poi.ConvertExcelToCSVProcessor/additionalDetails.html b/docs/nifi-docs/components/org.apache.nifi/nifi-poi-nar/1.16.3/org.apache.nifi.processors.poi.ConvertExcelToCSVProcessor/additionalDetails.html
new file mode 100644
index 0000000..fbefa08
--- /dev/null
+++ b/docs/nifi-docs/components/org.apache.nifi/nifi-poi-nar/1.16.3/org.apache.nifi.processors.poi.ConvertExcelToCSVProcessor/additionalDetails.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<head>
+    <meta charset="utf-8" />
+    <title>ConvertExcelToCSVProcessor</title>
+    <style>
+table {
+    border-collapse: collapse;
+}
+
+table, th, td {
+    border: 1px solid #ccc;
+}
+
+td.r {
+    text-align: right;
+}
+
+td {
+    width: 50px;
+    padding: 5px;
+}
+    </style>
+    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>How it extracts CSV data from a sheet</h2>
+<p>
+    ConvertExcelToCSVProcessor extracts CSV data with following rules:
+</p>
+<ul>
... 141982 lines suppressed ...