Author: bbende
Date: Thu Jun 21 18:18:06 2018
New Revision: 1834040

URL: http://svn.apache.org/viewvc?rev=1834040&view=rev
Log:
Updating nifi-registry-docs for 0.2.0 release

Added:
    nifi/site/trunk/docs/nifi-registry-docs/html/getting-started.html
    nifi/site/trunk/docs/nifi-registry-docs/html/images/ABCD_flow_changes.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/ABCD_flow_in_test_bucket.png
   (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/ABCD_flow_saved.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/ABCD_process_group_menu.png 
  (with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/ABCD_save_flow_version_2.png
   (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/ABCD_version_2.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/changed_flow_options.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/controller-settings-selection.png
   (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/drag_process_group.png  
 (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/empty_registry.png   
(with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/iconLocallyModified.png 
  (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/iconUpToDate.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/import_ABCD_version_2.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/import_flow_from_registry.png
   (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/local_registry.png   
(with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/new_test_bucket.png   
(with props)
    
nifi/site/trunk/docs/nifi-registry-docs/html/images/save_ABCD_flow_dialog.png   
(with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/test_bucket.png   (with 
props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/test_bucket_dialog.png  
 (with props)
    nifi/site/trunk/docs/nifi-registry-docs/html/images/two_ABCD_flows.png   
(with props)
Modified:
    nifi/site/trunk/docs/nifi-registry-docs/html/administration-guide.html
    nifi/site/trunk/docs/nifi-registry-docs/html/user-guide.html
    nifi/site/trunk/docs/nifi-registry-docs/index.html
    nifi/site/trunk/docs/nifi-registry-docs/rest-api/index.html

Modified: nifi/site/trunk/docs/nifi-registry-docs/html/administration-guide.html
URL: 
http://svn.apache.org/viewvc/nifi/site/trunk/docs/nifi-registry-docs/html/administration-guide.html?rev=1834040&r1=1834039&r2=1834040&view=diff
==============================================================================
--- nifi/site/trunk/docs/nifi-registry-docs/html/administration-guide.html 
(original)
+++ nifi/site/trunk/docs/nifi-registry-docs/html/administration-guide.html Thu 
Jun 21 18:18:06 2018
@@ -464,7 +464,7 @@ body.book #toc,body.book #preamble,body.
 <li><a 
href="administration-guide.html#kerberos_identity_provider">Kerberos</a></li>
 </ul>
 </li>
-<li><a 
href="administration-guide.html#multi-tenant-authorization">Authorization</a>
+<li><a href="administration-guide.html#authorization">Authorization</a>
 <ul class="sectlevel2">
 <li><a href="administration-guide.html#authorizer-configuration">Authorizer 
Configuration</a></li>
 <li><a href="administration-guide.html#authorizers-setup">Authorizers.xml 
Setup</a></li>
@@ -493,6 +493,14 @@ body.book #toc,body.book #preamble,body.
 <li><a href="administration-guide.html#kerberos_properties">Kerberos 
Properties</a></li>
 </ul>
 </li>
+<li><a href="administration-guide.html#persistence-providers">Persistence 
Providers</a>
+<ul class="sectlevel2">
+<li><a 
href="administration-guide.html#filesystemflowpersistenceprovider">FileSystemFlowPersistenceProvider</a></li>
+<li><a 
href="administration-guide.html#gitflowpersistenceprovider">GitFlowPersistenceProvider</a></li>
+<li><a 
href="administration-guide.html#switching-from-other-persistence-provider">Switching
 from other Persistence Provider</a></li>
+<li><a 
href="administration-guide.html#data-model-version-of-serialized-flow-snapshots">Data
 model version of serialized Flow snapshots</a></li>
+</ul>
+</li>
 </ul>
 </div>
 </div>
@@ -506,8 +514,26 @@ body.book #toc,body.book #preamble,body.
 <div class="ulist">
 <ul>
 <li>
-<p>Requires Java 8, newer than 1.8.0_45</p>
+<p>Requires Java Development Kit (JDK) 8, newer than 1.8.0_45</p>
 </li>
+</ul>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+When running Registry with only a JRE you may encounter the following error as 
Flyway (database migration tool) attempts to utilize a resource from the 
JDK:<br>
+<br>
+ java.lang.RuntimeException: 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'flywayInitializer' defined in class path resource 
[org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]:
 Invocation of init method failed; nested exception is 
org.flywaydb.core.api.FlywayException: Validate failed: Detected failed 
migration to version 1.3 (DropBucketItemNameUniqueness)
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<ul>
 <li>
 <p>Supported Operating Systems:</p>
 <div class="ulist">
@@ -583,7 +609,7 @@ body.book #toc,body.book #preamble,body.
 <p>service nifi-registry start</p>
 </li>
 <li>
-<p>service nifi-regsitry stop</p>
+<p>service nifi-registry stop</p>
 </li>
 <li>
 <p>service nifi-registry status</p>
@@ -723,20 +749,20 @@ NiFi Registry does not perform user auth
 Alternatively, a secured NiFi Registry can be configured to authenticate users 
via username/password.</p>
 </div>
 <div class="paragraph">
-<p>Username/password authentication is performed by an <em>Identity 
Provider</em>. The Identity Provider is a pluggable mechanism for
+<p>Username/password authentication is performed by an 'Identity Provider'. 
The Identity Provider is a pluggable mechanism for
 authenticating users via their username/password. Which Identity Provider to 
use is configured in the <em>nifi-registry.properties</em> file.
 Currently NiFi Registry offers Identity Providers for LDAP and Kerberos.</p>
 </div>
 <div class="paragraph">
-<p>Identity Providers are configured using two properties in the 
<em>nifi-registry.properties</em> file:</p>
+<p>Identity Providers are configured using two properties in the 
'nifi-registry.properties' file:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>The 
<code>nifi.registry.security.identity.providers.configuration.file</code> 
property specifies the configuration file where identity providers are defined. 
 By default, the <em>identity-providers.xml</em> file located in the root 
installation conf directory is selected.</p>
+<p>The 
<code>nifi.registry.security.identity.providers.configuration.file</code> 
property specifies the configuration file where identity providers are defined. 
 By default, the 'identity-providers.xml' file located in the root installation 
conf directory is selected.</p>
 </li>
 <li>
-<p>The <code>nifi.registry.security.identity.provider</code> property 
indicates which of the configured identity providers in the 
<em>identity-providers.xml</em> file to use. By default, this property is not 
configured meaning that username/password must be explicitly enabled.</p>
+<p>The <code>nifi.registry.security.identity.provider</code> property 
indicates which of the configured identity providers in the 
'identity-providers.xml' file to use. By default, this property is not 
configured meaning that username/password must be explicitly enabled.</p>
 </li>
 </ul>
 </div>
@@ -886,7 +912,7 @@ NiFi Registry can only be configured to
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>User 
Search Filter</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Filter for 
searching for users against the <em>User Search Base</em>. (i.e. 
sAMAccountName={0}). The user specified name is inserted into 
<em>{0}</em>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Filter for 
searching for users against the 'User Search Base'. (i.e. sAMAccountName={0}). 
The user specified name is inserted into '{0}'.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>Identity Strategy</code></p></td>
@@ -955,24 +981,24 @@ compatibility. USE_DN will use the full
 </div>
 </div>
 <div class="sect1">
-<h2 id="multi-tenant-authorization"><a class="anchor" 
href="administration-guide.html#multi-tenant-authorization"></a>Authorization</h2>
+<h2 id="authorization"><a class="anchor" 
href="administration-guide.html#authorization"></a>Authorization</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>After you have configured NiFi Registry to run securely and with an 
authentication mechanism, you must configure who has access to the system and 
their level of access.
-This is done by defining policies that give users and groups permissions to 
perform a particular action. These policies are defined in an 
<em>authorizer</em>.</p>
+This is done by defining policies that give users and groups permissions to 
perform a particular action. These policies are defined in an 'authorizer'.</p>
 </div>
 <div class="sect2">
 <h3 id="authorizer-configuration"><a class="anchor" 
href="administration-guide.html#authorizer-configuration"></a>Authorizer 
Configuration</h3>
 <div class="paragraph">
-<p>An <em>authorizer</em> manages known users and their access policies. 
Authorizers are configured using two properties in the 
<em>nifi-registry.properties</em> file:</p>
+<p>An 'authorizer' manages known users and their access policies. Authorizers 
are configured using two properties in the 'nifi-registry.properties' file:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>The <code>nifi.registry.security.authorizers.configuration.file</code> 
property specifies the configuration file where authorizers are defined.  By 
default, the <em>authorizers.xml</em> file located in the root installation 
conf directory is selected.</p>
+<p>The <code>nifi.registry.security.authorizers.configuration.file</code> 
property specifies the configuration file where authorizers are defined.  By 
default, the 'authorizers.xml' file located in the root installation conf 
directory is selected.</p>
 </li>
 <li>
-<p>The <code>nifi.registry.security.authorizer</code> property indicates which 
of the configured authorizers in the <em>authorizers.xml</em> file to use.</p>
+<p>The <code>nifi.registry.security.authorizer</code> property indicates which 
of the configured authorizers in the 'authorizers.xml' file to use.</p>
 </li>
 </ul>
 </div>
@@ -980,7 +1006,7 @@ This is done by defining policies that g
 <div class="sect2">
 <h3 id="authorizers-setup"><a class="anchor" 
href="administration-guide.html#authorizers-setup"></a>Authorizers.xml 
Setup</h3>
 <div class="paragraph">
-<p>The <em>authorizers.xml</em> file is used to define and configure available 
authorizers.  The default authorizer is the StandardManagedAuthorizer.  The 
managed authorizer is comprised of a UserGroupProvider
+<p>The 'authorizers.xml' file is used to define and configure available 
authorizers.  The default authorizer is the StandardManagedAuthorizer.  The 
managed authorizer is comprised of a UserGroupProvider
 and a AccessPolicyProvider.  The users, group, and access policies will be 
loaded and optionally configured through these providers.  The managed 
authorizer will make all access decisions based on
 these provided users, groups, and access policies.</p>
 </div>
@@ -994,7 +1020,7 @@ these provided users, groups, and access
 <ul>
 <li>
 <p>Users File - The file where the FileUserGroupProvider stores users and 
groups.
-By default, <em>users.xml</em> in the <em>conf</em> directory is chosen.</p>
+By default, 'users.xml' in the 'conf' directory is chosen.</p>
 </li>
 <li>
 <p>Initial User Identity - The identity of a user or system to seed an empty 
Users File.
@@ -1084,13 +1110,16 @@ This will sync users and groups from a d
 <p>User Search Scope - Search scope for searching users (ONE_LEVEL, OBJECT, or 
SUBTREE). Required if searching users.</p>
 </li>
 <li>
-<p>User Search Filter - Filter for searching for users against the <em>User 
Search Base</em> (i.e. (memberof=cn=team1,ou=groups,o=nifi) ). Optional.</p>
+<p>User Search Filter - Filter for searching for users against the 'User 
Search Base' (i.e. (memberof=cn=team1,ou=groups,o=nifi) ). Optional.</p>
 </li>
 <li>
 <p>User Identity Attribute - Attribute to use to extract user identity (i.e. 
cn). Optional. If not set, the entire DN is used.</p>
 </li>
 <li>
-<p>User Group Name Attribute - Attribute to use to define group membership 
(i.e. memberof). Optional. If not set group membership will not be calculated 
through the users. Will rely on group membership being defined through Group 
Member Attribute if set.</p>
+<p>User Group Name Attribute - Attribute to use to define group membership 
(i.e. memberof). Optional. If not set group membership will not be calculated 
through the users. Will rely on group membership being defined through 'Group 
Member Attribute' if set. The value of this property is the name of the 
attribute in the user LDAP entry that associates them with a group. The value 
of that user attribute could be a dn or group name for instance. What value is 
expected is configured in the 'User Group Name Attribute - Referenced Group 
Attribute'.</p>
+</li>
+<li>
+<p>User Group Name Attribute - Referenced Group Attribute - If blank, the 
value of the attribute defined in 'User Group Name Attribute' is expected to be 
the full dn of the group. If not blank, this property will define the attribute 
of the group LDAP entry that the value of the attribute defined in 'User Group 
Name Attribute' is referencing (i.e. name). Use of this property requires that 
'Group Search Base' is also configured.</p>
 </li>
 <li>
 <p>Group Search Base - Base DN for searching for groups (i.e. 
ou=groups,o=nifi). Required to search groups.</p>
@@ -1102,13 +1131,16 @@ This will sync users and groups from a d
 <p>Group Search Scope - Search scope for searching groups (ONE_LEVEL, OBJECT, 
or SUBTREE). Required if searching groups.</p>
 </li>
 <li>
-<p>Group Search Filter - Filter for searching for groups against the <em>Group 
Search Base</em>. Optional.</p>
+<p>Group Search Filter - Filter for searching for groups against the 'Group 
Search Base'. Optional.</p>
 </li>
 <li>
 <p>Group Name Attribute - Attribute to use to extract group name (i.e. cn). 
Optional. If not set, the entire DN is used.</p>
 </li>
 <li>
-<p>Group Member Attribute - Group Member Attribute - Attribute to use to 
define group membership (i.e. member). Optional. If not set group membership 
will not be calculated through the groups. Will rely on group member being 
defined through User Group Name Attribute if set.</p>
+<p>Group Member Attribute - Attribute to use to define group membership (i.e. 
member). Optional. If not set group membership will not be calculated through 
the groups. Will rely on group membership being defined through 'User Group 
Name Attribute' if set. The value of this property is the name of the attribute 
in the group LDAP entry that associates them with a user. The value of that 
group attribute could be a dn or memberUid for instance. What value is expected 
is configured in the 'Group Member Attribute - Referenced User Attribute'. 
(i.e. member: cn=User 1,ou=users,o=nifi vs. memberUid: user1)</p>
+</li>
+<li>
+<p>Group Member Attribute - Referenced User Attribute - If blank, the value of 
the attribute defined in 'Group Member Attribute' is expected to be the full dn 
of the user. If not blank, this property will define the attribute of the user 
LDAP entry that the value of the attribute defined in 'Group Member Attribute' 
is referencing (i.e. uid). Use of this property requires that 'User Search 
Base' is also configured. (i.e. member: cn=User 1,ou=users,o=nifi vs. 
memberUid: user1)</p>
 </li>
 </ul>
 </div>
@@ -1149,7 +1181,7 @@ The default AccessPolicyProvider is the
 </li>
 <li>
 <p>Authorizations File - The file where the FileAccessPolicyProvider will 
store policies.
-By default, <em>authorizations.xml</em> in the <em>conf</em> directory is 
chosen.</p>
+By default, 'authorizations.xml' in the 'conf' directory is chosen.</p>
 </li>
 <li>
 <p>Initial Admin Identity - The identity of an initial admin user that will be 
granted access to the UI and given the ability to create additional users, 
groups, and policies.
@@ -1186,13 +1218,13 @@ Changes to the configured Initial Admin
 <div class="sect3">
 <h4 id="initial-admin-identity"><a class="anchor" 
href="administration-guide.html#initial-admin-identity"></a>Initial Admin 
Identity  (New NiFi Registry Instance)</h4>
 <div class="paragraph">
-<p>If you are setting up a secured NiFi Registry instance for the first time, 
you must manually designate an “Initial Admin Identity” in the 
<em>authorizers.xml</em> file.
+<p>If you are setting up a secured NiFi Registry instance for the first time, 
you must manually designate an “Initial Admin Identity” in the 
'authorizers.xml' file.
 This initial admin user is granted access to the UI and given the ability to 
create additional users, groups, and policies.
 The value of this property could be a certificate DN , LDAP identity (DN or 
username), or a Kerberos principal.
 If you are the NiFi Registry administrator, add yourself as the “Initial 
Admin Identity”.</p>
 </div>
 <div class="paragraph">
-<p>Here is an example LDAP entry using the name John Smith:</p>
+<p>Here is an example certificate DN entry using the name John Smith:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1255,8 +1287,8 @@ If you are the NiFi Registry administrat
 </div>
 </div>
 <div class="paragraph">
-<p>After you have edited and saved the <em>authorizers.xml</em> file, restart 
NiFi Registry.
-The <em>users.xml</em> and <em>authorizations.xml</em> files will be created, 
and the “Initial Admin Identity” user and administrative policies are added 
during start up.
+<p>After you have edited and saved the 'authorizers.xml' file, restart NiFi 
Registry.
+The 'users.xml' and 'authorizations.xml' files will be created, and the 
“Initial Admin Identity” user and administrative policies are added during 
start up.
 Once NiFi Registry starts, the “Initial Admin Identity” user is able to 
access the UI and begin managing users, groups, and policies.</p>
 </div>
 <div class="admonitionblock note">
@@ -1345,6 +1377,7 @@ member: cn=User 2,ou=users,o=nifi</pre>
         &lt;property name="User Search Filter"&gt;&lt;/property&gt;
         &lt;property name="User Identity Attribute"&gt;cn&lt;/property&gt;
         &lt;property name="User Group Name Attribute"&gt;&lt;/property&gt;
+        &lt;property name="User Group Name Attribute - Referenced Group 
Attribute"&gt;&lt;/property&gt;
 
         &lt;property name="Group Search 
Base"&gt;ou=groups,o=nifi&lt;/property&gt;
         &lt;property name="Group Object Class"&gt;groupOfNames&lt;/property&gt;
@@ -1352,6 +1385,7 @@ member: cn=User 2,ou=users,o=nifi</pre>
         &lt;property name="Group Search Filter"&gt;&lt;/property&gt;
         &lt;property name="Group Name Attribute"&gt;cn&lt;/property&gt;
         &lt;property name="Group Member Attribute"&gt;member&lt;/property&gt;
+        &lt;property name="Group Member Attribute - Referenced User 
Attribute"&gt;&lt;/property&gt;
     &lt;/userGroupProvider&gt;
 
     &lt;accessPolicyProvider&gt;
@@ -1372,7 +1406,7 @@ member: cn=User 2,ou=users,o=nifi</pre>
 </div>
 </div>
 <div class="paragraph">
-<p>The <em>Initial Admin Identity</em> value would have loaded from the cn of 
the User 1 entry based on the <em>User Identity Attribute</em> value.</p>
+<p>The 'Initial Admin Identity' value would have loaded from the cn of the 
User 1 entry based on the 'User Identity Attribute' value.</p>
 </div>
 <div class="paragraph">
 <p>Here is an example composite implementation loading users and groups from 
LDAP and a local file. Group membership will be driven through
@@ -1422,6 +1456,7 @@ the member attribute of each group. The
         &lt;property name="User Search Filter"&gt;&lt;/property&gt;
         &lt;property name="User Identity Attribute"&gt;cn&lt;/property&gt;
         &lt;property name="User Group Name Attribute"&gt;&lt;/property&gt;
+        &lt;property name="User Group Name Attribute - Referenced Group 
Attribute"&gt;&lt;/property&gt;
 
         &lt;property name="Group Search 
Base"&gt;ou=groups,o=nifi&lt;/property&gt;
         &lt;property name="Group Object Class"&gt;groupOfNames&lt;/property&gt;
@@ -1429,6 +1464,7 @@ the member attribute of each group. The
         &lt;property name="Group Search Filter"&gt;&lt;/property&gt;
         &lt;property name="Group Name Attribute"&gt;cn&lt;/property&gt;
         &lt;property name="Group Member Attribute"&gt;member&lt;/property&gt;
+        &lt;property name="Group Member Attribute - Referenced User 
Attribute"&gt;&lt;/property&gt;
     &lt;/userGroupProvider&gt;
 
     &lt;userGroupProvider&gt;
@@ -1457,9 +1493,9 @@ the member attribute of each group. The
 </div>
 </div>
 <div class="paragraph">
-<p>In this example, the users and groups are loaded from LDAP but the servers 
are managed in a local file. The <em>Initial Admin Identity</em> value came
-from an attribute in a LDAP entry based on the <em>User Identity 
Attribute</em>. The <em>NiFi Identity</em> values are established in the local 
file using the
-<em>Initial User Identity</em> properties.</p>
+<p>In this example, the users and groups are loaded from LDAP but the servers 
are managed in a local file. The 'Initial Admin Identity' value came
+from an attribute in a LDAP entry based on the 'User Identity Attribute'. The 
'NiFi Identity' values are established in the local file using the
+'Initial User Identity' properties.</p>
 </div>
 </div>
 </div>
@@ -1497,7 +1533,7 @@ assume you have downloaded the binary fo
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>./bin/encrypt-config nifi-registry [options]</pre>
+<pre>./bin/encrypt-config --nifiRegistry [options]</pre>
 </div>
 </div>
 <div class="ulist">
@@ -1547,7 +1583,7 @@ assume you have downloaded the binary fo
 </ul>
 </div>
 <div class="paragraph">
-<p>As an example of how the tool works, assuming that you have installed the 
tool on a machine supporting 256-bit encryption and with the following existing 
values in the <em>nifi-registry.properties</em> file:</p>
+<p>As an example of how the tool works, assuming that you have installed the 
tool on a machine supporting 256-bit encryption and with the following existing 
values in the 'nifi-registry.properties' file:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1573,7 +1609,7 @@ nifi.registry.security.truststorePasswd=
 </div>
 </div>
 <div class="paragraph">
-<p>As a result, the <em>nifi-registry.properties</em> file is overwritten with 
protected properties and sibling encryption identifiers 
(<code>aes/gcm/256</code>, the currently supported algorithm):</p>
+<p>As a result, the 'nifi-registry.properties' file is overwritten with 
protected properties and sibling encryption identifiers 
(<code>aes/gcm/256</code>, the currently supported algorithm):</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1590,7 +1626,7 @@ nifi.registry.security.truststorePasswd=
 </div>
 </div>
 <div class="paragraph">
-<p>When applied to <em>identity-providers.xml</em> or 
<em>authorizers.xml</em>, the property elements are updated with an 
<code>encryption</code> attribute. For example:</p>
+<p>When applied to 'identity-providers.xml' or 'authorizers.xml', the property 
elements are updated with an <code>encryption</code> attribute. For example:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1609,7 +1645,7 @@ nifi.registry.security.truststorePasswd=
 </div>
 </div>
 <div class="paragraph">
-<p>Additionally, the <em>bootstrap.conf</em> file is updated with the 
encryption key as follows:</p>
+<p>Additionally, the 'bootstrap.conf' file is updated with the encryption key 
as follows:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1622,15 +1658,15 @@ nifi.registry.bootstrap.sensitive.key=01
 To encrypt additional properties, specify them as comma-separated values in 
the <code>nifi.registry.sensitive.props.additional.keys</code> property.</p>
 </div>
 <div class="paragraph">
-<p>If the <em>nifi-registry.properties</em> file already has valid protected 
values and you wish to protect additional values using the
-same master key already present in your <em>bootstrap.conf</em>, then run the 
tool without specifying a new key:</p>
+<p>If the 'nifi-registry.properties' file already has valid protected values 
and you wish to protect additional values using the
+same master key already present in your 'bootstrap.conf', then run the tool 
without specifying a new key:</p>
 </div>
 <div class="listingblock">
 <div class="content">
 <pre># bootstrap.conf already contains master key property
 # nifi-registy.properties has been updated for 
nifi.registry.sensitive.props.additional.keys=...
 
-./bin/encrypt-config.sh nifi-registry -b bootstrap.conf -r 
nifi-registry.properties</pre>
+./bin/encrypt-config.sh --nifiRegistry -b bootstrap.conf -r 
nifi-registry.properties</pre>
 </div>
 </div>
 </div>
@@ -1639,7 +1675,7 @@ same master key already present in your
 <div class="paragraph">
 <p>In order to change the key used to encrypt the sensitive values, provide 
the new key or password using the <code>-k</code> or <code>-p</code> flags as 
usual,
 and provide the existing key or password using <code>--old-key</code> or 
<code>--old-password</code> respectively. This will allow the toolkit to 
decrypt the
-existing values and re-encrypt them, and update <em>bootstrap.conf</em> with 
the new key. Only one of the key or password needs to be specified
+existing values and re-encrypt them, and update 'bootstrap.conf' with the new 
key. Only one of the key or password needs to be specified
 for each phase (old vs. new), and any combination is sufficient:</p>
 </div>
 <div class="ulist">
@@ -1686,7 +1722,7 @@ for each phase (old vs. new), and any co
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">run.as</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The 
username to run NiFi Registry as. For instance, if NiFi Registry should be run 
as the <em>nifi_registry</em> user, setting this value to 
<em>nifi_registry</em> will cause the NiFi Registry Process to be run as the 
<em>nifi_registry</em> user. This property is ignored on Windows. For Linux, 
the specified user may require sudo permissions.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The 
username to run NiFi Registry as. For instance, if NiFi Registry should be run 
as the 'nifi_registry' user, setting this value to 'nifi_registry' will cause 
the NiFi Registry Process to be run as the 'nifi_registry' user. This property 
is ignored on Windows. For Linux, the specified user may require sudo 
permissions.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">lib.dir</p></td>
@@ -1722,7 +1758,7 @@ That way all context paths are passed th
 </li>
 <li>
 <p>If NiFi Registry is running securely, any proxy needs to be authorized to 
proxy user requests. These can be configured in the NiFi Registry UI through the
-Users administration section, by selecting <em>Proxy</em> for the given user. 
Once these permissions are in place, proxies can begin proxying user requests.
+Users administration section, by selecting 'Proxy' for the given user. Once 
these permissions are in place, proxies can begin proxying user requests.
 The end user identity must be relayed in a HTTP header. For example, if the 
end user sent a request to the proxy, the proxy must authenticate the user. 
Following
 this the proxy can send the request to NiFi Registry. In this request an HTTP 
header should be added as follows.</p>
 </li>
@@ -1775,7 +1811,7 @@ Please refer the documentation of the pr
 <div class="paragraph">
 <p>NiFi Registry can be configured to use Kerberos SPNEGO (or "Kerberos 
Service") for authentication. In this scenario, users will hit the REST 
endpoint <code>/access/token/kerberos</code>
 and the server will respond with a <code>401</code> status code and the 
challenge response header <code>WWW-Authenticate: Negotiate</code>. This 
communicates to the browser to use the GSS-API
-and load the user&#8217;s Kerberos ticket and provide it as a Base64-encoded 
header value in the subsequent request. It will be of the form 
<code>Authorization: Negotiate YII...</code>.
+and load the user&#8217;s Kerberos ticket and provide it as a Base64-encoded 
header value in the subsequent request. It will be of the form 
<code>Authorization: Negotiate YII&#8230;&#8203;</code>.
 NiFi Registry will attempt to validate this ticket with the KDC. If it is 
successful, the user&#8217;s <em>principal</em> will be returned as the 
identity, and the flow will follow
 login/credential authentication, in that a JWT will be issued in the response 
to prevent the unnecessary overhead of Kerberos authentication on every 
subsequent request.
 If the ticket cannot be validated, it will return with the appropriate error 
response code. The user will then be able to provide their Kerberos credentials 
to the login
@@ -1797,13 +1833,13 @@ Check the case sensitivity of the servic
 </li>
 <li>
 <p>Browsers have varying levels of restriction when dealing with SPNEGO 
negotiations.
-Some will provide the local Kerberos ticket to any domain that requests it, 
while others whitelist the trusted domains. See <a 
href="http://docs.spring.io/autorepo/docs/spring-security-kerberos/1.0.2.BUILD-SNAPSHOT/reference/htmlsingle/#browserspnegoconfig";>Spring
 Security Kerberos - Reference Documentation: Appendix E. Configure browsers 
for SPNEGO Negotiation</a> for common browsers.</p>
+Some will provide the local Kerberos ticket to any domain that requests it, 
while others whitelist the trusted domains. See <a 
href="http://docs.spring.io/autorepo/docs/spring-security-kerberos/1.0.2.BUILD-SNAPSHOT/reference/htmlsingle/#browserspnegoconfig";
 target="_blank">Spring Security Kerberos - Reference Documentation: Appendix 
E. Configure browsers for SPNEGO Negotiation</a> for common browsers.</p>
 </li>
 <li>
 <p>Some browsers (legacy IE) do not support recent encryption algorithms such 
as AES, and are restricted to legacy algorithms (DES). This should be noted 
when generating keytabs.</p>
 </li>
 <li>
-<p>The KDC must be configured and a service principal defined for NiFi and a 
keytab exported. Comprehensive instructions for Kerberos server configuration 
and administration are beyond the scope of this document (see <a 
href="http://web.mit.edu/kerberos/krb5-current/doc/admin/index.html";>MIT 
Kerberos Admin Guide</a>), but an example is below:</p>
+<p>The KDC must be configured and a service principal defined for NiFi and a 
keytab exported. Comprehensive instructions for Kerberos server configuration 
and administration are beyond the scope of this document (see <a 
href="http://web.mit.edu/kerberos/krb5-current/doc/admin/index.html"; 
target="_blank">MIT Kerberos Admin Guide</a>), but an example is below:</p>
 </li>
 <li>
 <p>Kerberos tickets may use AES encryption with keys up to 256-bits in length, 
and therefore unlimited strength encryption policies may be required for the 
Jave Runtime Environment (JRE) used for NiFi Registry when Kerberos SPNEGO is 
configured.</p>
@@ -1965,7 +2001,7 @@ Security Configuration section of this A
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.security.identity.providers.configuration.file</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">This is 
the location of the file that specifies how username/password authentication is 
performed. This file is only considered if 
<code>nifi.registry.security.identity.provider</code> is configured with a 
provider identifier. The default value is 
./conf/identity-providers.xml.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This is 
the location of the file that specifies how username/password authentication is 
performed. This file is only considered if 
<code>nifi.registry.security.identity.provider</code> is configured with a 
provider identifier. The default value is 
<code>./conf/identity-providers.xml</code>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.security.identity.provider</p></td>
@@ -1978,7 +2014,7 @@ Security Configuration section of this A
 <h3 id="providers-properties"><a class="anchor" 
href="administration-guide.html#providers-properties"></a>Providers 
Properties</h3>
 <div class="paragraph">
 <p>These properties pertain to flow persistence providers. NiFi Registry uses 
a pluggable flow persistence provider to store the
-content of the flows saved to the registry. NiFi Registry provides the 
<code>FileSystemFlowPersistenceProvider</code>.</p>
+content of the flows saved to the registry. For further details on persistence 
providers, refer <a 
href="administration-guide.html#persistence-providers">Persistence 
Providers</a>.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
@@ -2002,6 +2038,9 @@ content of the flows saved to the regist
 <div class="paragraph">
 <p>These properties define the settings for the Registry database, which keeps 
track of metadata about buckets and all items stored in buckets.</p>
 </div>
+<div class="paragraph">
+<p>The 0.1.0 release leveraged an embedded H2 database that was configured via 
the following properties:</p>
+</div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -2022,6 +2061,64 @@ content of the flows saved to the regist
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>The 0.2.0 release introduced a more flexible approach which allows 
leveraging an external database. This new approach
+is configured via the following properties:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Property</strong></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Description</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.url</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The full 
JDBC connection string. The default value will specify a new H2 database in the 
same location as the previous one. For example, 
'jdbc:h2:./database/nifi-registry-primary;'.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.driver.class</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The class 
name of the JDBC driver. The default value is 'org.h2.Driver'.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.driver.directory</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">An 
optional directory containing one or more JARs to add to the classpath. If not 
specified, it is assumed that the driver JAR is already on the classpath by 
copying it to the lib directory. The H2 driver is bundled with Registry so it 
is not necessary to do anything for the default case.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.driver.username</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The 
username for the database. The default value is 'nifireg'.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.driver.password</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The 
password for the database. The default value is 'nifireg'.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.driver.maxConnections</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The max 
number of connections for the connection pool. The default value is 
'5'.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">nifi.registry.db.sql.debug</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Whether or 
not enable debug logging for SQL statements. The default value is 
'false'.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+When upgrading from 0.1.0 to a future version, if 'nifi.registry.db.directory' 
remains populated, the application will
+attempt to migrate the data from the original database to the new database 
specified with the new properties. This will only
+happen the first time the application starts with the new database properties.
+</td>
+</tr>
+</table>
+</div>
 </div>
 <div class="sect2">
 <h3 id="extension-directories"><a class="anchor" 
href="administration-guide.html#extension-directories"></a>Extension 
Directories</h3>
@@ -2097,10 +2194,290 @@ Providing 2 total locations, including <
 </div>
 </div>
 </div>
+<div class="sect1">
+<h2 id="persistence-providers"><a class="anchor" 
href="administration-guide.html#persistence-providers"></a>Persistence 
Providers</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>NiFi Registry uses a pluggable flow persistence provider to store the 
content of the flows saved to the registry. NiFi Registry provides <code><a 
href="administration-guide.html#filesystemflowpersistenceprovider">FileSystemFlowPersistenceProvider</a></code>
 and <code><a 
href="administration-guide.html#gitflowpersistenceprovider">GitFlowPersistenceProvider</a></code>.</p>
+</div>
+<div class="paragraph">
+<p>Each persistence provider has its own configuration parameters, those can 
be configured in a XML file specified in <a 
href="administration-guide.html#providers-properties">nifi-registry.properties</a>.</p>
+</div>
+<div class="paragraph">
+<p>The XML configuration file looks like below. It has a 
<code>flowPersistenceProvider</code> element in which qualified class name of a 
persistence provider implementation and its configuration properties are 
defined. See following sections for available configurations for each 
provider.</p>
+</div>
+<div class="listingblock">
+<div class="title">Example providers.xml</div>
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;?xml 
version="1.0" encoding="UTF-8" standalone="yes"?&gt;
+&lt;providers&gt;
+
+    &lt;flowPersistenceProvider&gt;
+        &lt;class&gt;persistence-provider-qualified-class-name&lt;/class&gt;
+        &lt;property name="property-1"&gt;property-value-1&lt;/property&gt;
+        &lt;property name="property-2"&gt;property-value-2&lt;/property&gt;
+        &lt;property name="property-n"&gt;property-value-n&lt;/property&gt;
+    &lt;/flowPersistenceProvider&gt;
+
+&lt;/providers&gt;</code></pre>
+</div>
+</div>
+<div class="sect2">
+<h3 id="filesystemflowpersistenceprovider"><a class="anchor" 
href="administration-guide.html#filesystemflowpersistenceprovider"></a>FileSystemFlowPersistenceProvider</h3>
+<div class="paragraph">
+<p>FileSystemFlowPersistenceProvider simply stores serialized Flow contents 
into <code>{bucket-id}/{flow-id}/{version}</code> directories.</p>
+</div>
+<div class="paragraph">
+<p>Example of persisted files:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>Flow Storage Directory/
+├── {bucket-id}/
+│   └── {flow-id}/
+│       ├── {version}/{version}.snapshot
+└── d1beba88-32e9-45d1-bfe9-057cc41f7ce8/
+    └── 219cf539-427f-43be-9294-0644fb07ca63/
+        ├── 1/1.snapshot
+        └── 2/2.snapshot</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Qualified class name: 
<code>org.apache.nifi.registry.provider.flow.FileSystemFlowPersistenceProvider</code></p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Property</strong></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Description</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flow 
Storage Directory</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">REQUIRED: 
File system path for a directory where flow contents files are persisted to. If 
the directory does not exist when NiFi Registry starts, it will be created. If 
the directory exists, it must be readable and writable from NiFi 
Registry.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="gitflowpersistenceprovider"><a class="anchor" 
href="administration-guide.html#gitflowpersistenceprovider"></a>GitFlowPersistenceProvider</h3>
+<div class="paragraph">
+<p>GitFlowPersistenceProvider stores flow contents under a Git directory.</p>
+</div>
+<div class="paragraph">
+<p>In contrast to FileSystemFlowPersistenceProvider, this provider uses human 
friendly Bucket and Flow names so that those files can be accessed by external 
tools. However, it is NOT supported to modify stored files outside of NiFi 
Registry. Persisted files are only read when NiFi Registry starts up.</p>
+</div>
+<div class="paragraph">
+<p>Buckets are represented as directories and Flow contents are stored as 
files in a Bucket directory they belong to. Flow snapshot histories are managed 
as Git commits, meaning only the latest version of Buckets and Flows exist in 
the Git directory. Old versions are retrieved from Git commit histories.</p>
+</div>
+<div class="literalblock">
+<div class="title">Example persisted files</div>
+<div class="content">
+<pre>Flow Storage Directory/
+├── .git/
+├── Bucket_A/
+│   ├── bucket.yml
+│   ├── Flow_1.snapshot
+│   └── Flow_2.snapshot
+└── Bucket_B/
+    ├── bucket.yml
+    └── Flow_4.snapshot</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Each Bucket directory contains a YAML file named <code>bucket.yml</code>. 
The file manages links from NiFi Registry Bucket and Flow IDs to actual 
directory and file names. When NiFi Registry starts, this provider reads 
through Git commit histories and lookup these <code>bucket.yml</code> files to 
restore Buckets and Flows for each snapshot version.</p>
+</div>
+<div class="listingblock">
+<div class="title">Example bucket.yml</div>
+<div class="content">
+<pre class="highlight"><code class="language-yml" data-lang="yml">layoutVer: 1
+bucketId: d1beba88-32e9-45d1-bfe9-057cc41f7ce8
+flows:
+  219cf539-427f-43be-9294-0644fb07ca63: {ver: 7, file: Flow_1.snapshot}
+  22cccb6c-3011-4493-a996-611f8f112969: {ver: 3, file: 
Flow_2.snapshot}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Qualified class name: 
<code>org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider</code></p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Property</strong></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Description</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flow 
Storage Directory</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">REQUIRED: 
File system path for a directory where flow contents files are persisted to. 
The directory must exist when NiFi registry starts. Also must be initialized as 
a Git directory. See <a 
href="administration-guide.html#initialize-git-directory">Initialize Git 
directory</a> for detail.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Remote To 
Push</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">When a new 
flow snapshot is created, this persistence provider updated files in the 
specified Git directory, then create a commit to the local repository. If 
<code>Remote To Push</code> is defined, it also pushes to the specified remote 
repository. E.g. 'origin'. To define more detailed remote spec such as branch 
names, use <code>Refspec</code>. See <a 
href="https://git-scm.com/book/en/v2/Git-Internals-The-Refspec"; 
class="bare">https://git-scm.com/book/en/v2/Git-Internals-The-Refspec</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Remote 
Access User</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This user 
name is used to make push requests to the remote repository when <code>Remote 
To Push</code> is enabled, and the remote repository is accessed by HTTP 
protocol. If SSH is used, user authentication is done with SSH keys.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Remote 
Access Password</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Used with 
<code>Remote Access User</code>.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="sect3">
+<h4 id="initialize-git-directory"><a class="anchor" 
href="administration-guide.html#initialize-git-directory"></a>Initialize Git 
directory</h4>
+<div class="paragraph">
+<p>In order to use GitFlowPersistenceRepository, you need to prepare a Git 
directory on the local file system. You can do so by initializing a directory 
with <code>git init</code> command, or clone an existing Git project from a 
remote Git repository by <code>git clone</code> command.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Git init command
+<a href="https://git-scm.com/docs/git-init"; 
class="bare">https://git-scm.com/docs/git-init</a></p>
+</li>
+<li>
+<p>Git clone command
+<a href="https://git-scm.com/docs/git-clone"; 
class="bare">https://git-scm.com/docs/git-clone</a></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="git-user-configuration"><a class="anchor" 
href="administration-guide.html#git-user-configuration"></a>Git user 
configuration</h4>
+<div class="paragraph">
+<p>This persistence provider uses preconfigured Git user name and user email 
address when it creates Git commits. NiFi Registry user name is added to commit 
messages.</p>
+</div>
+<div class="literalblock">
+<div class="title">Example commit</div>
+<div class="content">
+<pre>commit 774d4bd125f2b1200f0a5ee1f1e9fedc6a415e83
+Author: git-user &lt;[email protected]&gt;
+Date:   Tue May 8 14:30:31 2018 +0900
+
+    Commit message.
+
+    By NiFi Registry user: nifi-registry-user-1</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can configure Git user name and email address by <code>git 
config</code> command.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Git config command
+<a href="https://git-scm.com/docs/git-config"; 
class="bare">https://git-scm.com/docs/git-config</a></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="git-user-authentication"><a class="anchor" 
href="administration-guide.html#git-user-authentication"></a>Git user 
authentication</h4>
+<div class="paragraph">
+<p>By default, this persistence repository only create commits to local 
repository. No user authentication is needed to do so. However, if 'Commit To 
Push' is enabled, user authentication to the remote Git repository is 
required.</p>
+</div>
+<div class="paragraph">
+<p>If the remote repository is accessed by HTTP, then username and password 
for authentication can be configured in the providers XML configuration 
file.</p>
+</div>
+<div class="paragraph">
+<p>When SSH is used, SSH keys are used to identify a Git user. In order to 
pick the right key to a remote server, the SSH configuration file 
<code>${USER_HOME}/.ssh/config</code> is used. The SSH configuration file can 
contain multiple <code>Host</code> entries to specify a key file to login to a 
remote Git server. The <code>Host</code> must much with the target remote Git 
server hostname.</p>
+</div>
+<div class="literalblock">
+<div class="title">example SSH config file</div>
+<div class="content">
+<pre>Host git.example.com
+  HostName git.example.com
+  IdentityFile ~/.ssh/id_rsa
+
+Host github.com
+  HostName github.com
+  IdentityFile ~/.ssh/key-for-github
+
+Host bitbucket.org
+  HostName bitbucket.org
+  IdentityFile ~/.ssh/key-for-bitbucket</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="switching-from-other-persistence-provider"><a class="anchor" 
href="administration-guide.html#switching-from-other-persistence-provider"></a>Switching
 from other Persistence Provider</h3>
+<div class="paragraph">
+<p>In order to switch Persistence Provider to use, it is necessary to reset 
NiFi Registry.
+For example, to switch from FileSystemFlowPersistenceProvider to 
GitFlowPersistenceProvider, follow these steps:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Stop version control on all ProcessGroups in NiFi</p>
+</li>
+<li>
+<p>Stop NiFi Registry</p>
+</li>
+<li>
+<p>Move the H2 DB (specified as <code>nifi.registry.db.directory</code> in 
nifi-registry.properties) and 'Flow Storage Directory' for 
FileSystemFlowPersistenceProvider directories somewhere for back up</p>
+</li>
+<li>
+<p>Configure GitFlowPersistenceProvider provider in providers.xml</p>
+</li>
+<li>
+<p>Start NiFi Registry</p>
+</li>
+<li>
+<p>Recreate any buckets</p>
+</li>
+<li>
+<p>Start version control on all ProcessGroups again</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="data-model-version-of-serialized-flow-snapshots"><a class="anchor" 
href="administration-guide.html#data-model-version-of-serialized-flow-snapshots"></a>Data
 model version of serialized Flow snapshots</h3>
+<div class="paragraph">
+<p>Serialized Flow snapshots saved by these persistence providers have 
versions, so that the data format and schema can evolve over time. Data model 
version update is done automatically by NiFi Registry when it reads and stores 
each Flow content.</p>
+</div>
+<div class="paragraph">
+<p>Here is the data model version histories:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 33%;">
+<col style="width: 33%;">
+<col style="width: 33%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Data model version</strong></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Since NiFi Registry</strong></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Description</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">0.2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JSON 
formatted text file. The root object contains header and Flow content 
object.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">0.1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Binary 
format having header bytes at the beginning followed by Flow content 
represented as XML.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2017-12-28 12:45:10 -05:00
+Last updated 2018-06-16 08:37:12 -04:00
 </div>
 </div>
 </body>


Reply via email to