You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by br...@apache.org on 2016/11/29 16:13:18 UTC

[1/2] nifi-minifi git commit: MINIFI-137 Adding option to RPGs to transmit via HTTP. Also corrected a typo that had RPGs as 'Remote Processing Groups' instead of 'Remote Process Groups' (extra 'ing').

Repository: nifi-minifi
Updated Branches:
  refs/heads/master d681f8fd6 -> 98877d674


http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
index 10f263e..70f9e75 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
@@ -23,6 +23,7 @@ import org.apache.nifi.minifi.commons.schema.ConfigSchema;
 import org.apache.nifi.minifi.commons.schema.ConnectionSchema;
 import org.apache.nifi.minifi.commons.schema.ProcessorSchema;
 import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.common.ConvertableSchema;
 import org.apache.nifi.minifi.commons.schema.serialization.SchemaLoader;
 import org.apache.nifi.minifi.commons.schema.exception.SchemaLoaderException;
@@ -202,6 +203,11 @@ public class ConfigMainTest {
     }
 
     @Test
+    public void testTransformRoundTripSimpleTailFileToRPG() throws IOException, JAXBException, SchemaLoaderException {
+        transformRoundTrip("SimpleTailFileToRPG");
+    }
+
+    @Test
     public void testSuccessTransformProcessGroup() throws IOException, JAXBException, SchemaLoaderException {
         ConfigMain.transformTemplateToSchema(getClass().getClassLoader().getResourceAsStream("TemplateWithProcessGroup.xml")).toMap();
     }
@@ -303,7 +309,18 @@ public class ConfigMainTest {
                 v1Processor.setId(currentProcessor.getId());
             }
 
-            configSchemaUpgradedFromV1.getProcessGroupSchema().getRemoteProcessingGroups().stream().flatMap(g -> g.getInputPorts().stream()).map(RemoteInputPortSchema::getId).sequential()
+            List<RemoteProcessGroupSchema> currentRPGs = configSchemaFromCurrent.getProcessGroupSchema().getRemoteProcessGroups();
+            List<RemoteProcessGroupSchema> v1RPGs = configSchemaUpgradedFromV1.getProcessGroupSchema().getRemoteProcessGroups();
+            // V1 doesn't have ids so we need to map the autogenerated ones to the ones from the template
+            for (int i = 0; i < currentRPGs.size(); i++) {
+                RemoteProcessGroupSchema currentRPG = currentRPGs.get(i);
+                RemoteProcessGroupSchema v1RPG = v1RPGs.get(i);
+                assertEquals(currentRPG.getName(), v1RPG.getName());
+                v1IdToCurrentIdMap.put(v1RPG.getId(), currentRPG.getId());
+                v1RPG.setId(currentRPG.getId());
+            }
+
+            configSchemaUpgradedFromV1.getProcessGroupSchema().getRemoteProcessGroups().stream().flatMap(g -> g.getInputPorts().stream()).map(RemoteInputPortSchema::getId).sequential()
                     .forEach(id -> v1IdToCurrentIdMap.put(id, id));
 
             List<ConnectionSchema> currentConnections = configSchemaFromCurrent.getProcessGroupSchema().getConnections();

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaTest.java
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaTest.java b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaTest.java
new file mode 100644
index 0000000..e4d5b46
--- /dev/null
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaTest.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+
+package org.apache.nifi.minifi.toolkit.configuration.dto;
+
+import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
+import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
+import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO;
+import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+public class RemoteProcessGroupSchemaTest extends BaseSchemaTester<RemoteProcessGroupSchema, RemoteProcessGroupDTO> {
+    private final RemoteInputPortSchemaTest remoteInputPortSchemaTest;
+    private String testId = UUID.randomUUID().toString();
+    private String testName = "testName";
+    private String testUrl = "testUrl";
+    private String testComment = "testComment";
+    private String testTimeout = "11 s";
+    private String testYieldPeriod = "22 s";
+    private String transportProtocol = "HTTP";
+
+    public RemoteProcessGroupSchemaTest() {
+        super(new RemoteProcessGroupSchemaFunction(new RemoteInputPortSchemaFunction()), RemoteProcessGroupSchema::new);
+        remoteInputPortSchemaTest = new RemoteInputPortSchemaTest();
+    }
+
+    @Before
+    public void setup() {
+        remoteInputPortSchemaTest.setup();
+
+        dto = new RemoteProcessGroupDTO();
+        dto.setId(testId);
+        dto.setName(testName);
+        dto.setTargetUri(testUrl);
+
+        RemoteProcessGroupContentsDTO contents = new RemoteProcessGroupContentsDTO();
+        contents.setInputPorts(Arrays.asList(remoteInputPortSchemaTest.dto).stream().collect(Collectors.toSet()));
+        dto.setContents(contents);
+
+        dto.setComments(testComment);
+        dto.setCommunicationsTimeout(testTimeout);
+        dto.setYieldDuration(testYieldPeriod);
+        dto.setTransportProtocol(transportProtocol);
+
+        map = new HashMap<>();
+
+        map.put(CommonPropertyKeys.ID_KEY, testId);
+        map.put(CommonPropertyKeys.NAME_KEY, testName);
+        map.put(RemoteProcessGroupSchema.URL_KEY, testUrl);
+        map.put(CommonPropertyKeys.INPUT_PORTS_KEY, new ArrayList<>(Arrays.asList(remoteInputPortSchemaTest.map)));
+        map.put(CommonPropertyKeys.COMMENT_KEY, testComment);
+        map.put(RemoteProcessGroupSchema.TIMEOUT_KEY, testTimeout);
+        map.put(CommonPropertyKeys.YIELD_PERIOD_KEY, testYieldPeriod);
+        map.put(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY, transportProtocol);
+    }
+
+    @Test
+    public void testNoId() {
+        dto.setId(null);
+        map.remove(CommonPropertyKeys.ID_KEY);
+        assertDtoAndMapConstructorAreSame(1);
+    }
+
+    @Test
+    public void testNoName() {
+        dto.setName(null);
+        map.remove(CommonPropertyKeys.NAME_KEY);
+        assertDtoAndMapConstructorAreSame(0);
+    }
+
+    @Test
+    public void testNoUrl() {
+        dto.setTargetUri(null);
+        map.remove(RemoteProcessGroupSchema.URL_KEY);
+        assertDtoAndMapConstructorAreSame(1);
+    }
+
+    @Test
+    public void testNoInputPorts() {
+        dto.getContents().setInputPorts(null);
+        map.remove(CommonPropertyKeys.INPUT_PORTS_KEY);
+        assertDtoAndMapConstructorAreSame(1);
+    }
+
+    @Test
+    public void testNoComment() {
+        dto.setComments(null);
+        map.remove(CommonPropertyKeys.COMMENT_KEY);
+        assertDtoAndMapConstructorAreSame(0);
+    }
+
+    @Test
+    public void testNoTimeout() {
+        dto.setCommunicationsTimeout(null);
+        map.remove(RemoteProcessGroupSchema.TIMEOUT_KEY);
+        assertDtoAndMapConstructorAreSame(0);
+    }
+
+    @Test
+    public void testNoYield() {
+        dto.setYieldDuration(null);
+        map.remove(CommonPropertyKeys.YIELD_PERIOD_KEY);
+        assertDtoAndMapConstructorAreSame(0);
+    }
+
+    @Test
+    public void testNoTransportProtocol() {
+        dto.setTransportProtocol(null);
+        map.remove(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY);
+        assertDtoAndMapConstructorAreSame(0);
+    }
+
+    @Override
+    public void assertSchemaEquals(RemoteProcessGroupSchema one, RemoteProcessGroupSchema two) {
+        assertEquals(one.getName(), two.getName());
+        assertEquals(one.getUrl(), two.getUrl());
+
+        List<RemoteInputPortSchema> oneInputPorts = one.getInputPorts();
+        List<RemoteInputPortSchema> twoInputPorts = two.getInputPorts();
+        if (oneInputPorts == null) {
+            assertNull(twoInputPorts);
+        } else {
+            assertNotNull(twoInputPorts);
+            assertEquals(oneInputPorts.size(), twoInputPorts.size());
+            for (int i = 0; i < oneInputPorts.size(); i++) {
+                remoteInputPortSchemaTest.assertSchemaEquals(oneInputPorts.get(i), twoInputPorts.get(i));
+            }
+        }
+
+        assertEquals(one.getComment(), two.getComment());
+        assertEquals(one.getTimeout(), two.getTimeout());
+        assertEquals(one.getYieldPeriod(), two.getYieldPeriod());
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaTest.java
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaTest.java b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaTest.java
deleted file mode 100644
index bcd0a77..0000000
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.nifi.minifi.toolkit.configuration.dto;
-
-import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
-import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
-import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO;
-import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-public class RemoteProcessingGroupSchemaTest extends BaseSchemaTester<RemoteProcessingGroupSchema, RemoteProcessGroupDTO> {
-    private final RemoteInputPortSchemaTest remoteInputPortSchemaTest;
-    private String testId = UUID.randomUUID().toString();
-    private String testName = "testName";
-    private String testUrl = "testUrl";
-    private String testComment = "testComment";
-    private String testTimeout = "11 s";
-    private String testYieldPeriod = "22 s";
-
-    public RemoteProcessingGroupSchemaTest() {
-        super(new RemoteProcessingGroupSchemaFunction(new RemoteInputPortSchemaFunction()), RemoteProcessingGroupSchema::new);
-        remoteInputPortSchemaTest = new RemoteInputPortSchemaTest();
-    }
-
-    @Before
-    public void setup() {
-        remoteInputPortSchemaTest.setup();
-
-        dto = new RemoteProcessGroupDTO();
-        dto.setId(testId);
-        dto.setName(testName);
-        dto.setTargetUri(testUrl);
-
-        RemoteProcessGroupContentsDTO contents = new RemoteProcessGroupContentsDTO();
-        contents.setInputPorts(Arrays.asList(remoteInputPortSchemaTest.dto).stream().collect(Collectors.toSet()));
-        dto.setContents(contents);
-
-        dto.setComments(testComment);
-        dto.setCommunicationsTimeout(testTimeout);
-        dto.setYieldDuration(testYieldPeriod);
-
-        map = new HashMap<>();
-
-        map.put(CommonPropertyKeys.ID_KEY, testId);
-        map.put(CommonPropertyKeys.NAME_KEY, testName);
-        map.put(RemoteProcessingGroupSchema.URL_KEY, testUrl);
-        map.put(CommonPropertyKeys.INPUT_PORTS_KEY, new ArrayList<>(Arrays.asList(remoteInputPortSchemaTest.map)));
-        map.put(CommonPropertyKeys.COMMENT_KEY, testComment);
-        map.put(RemoteProcessingGroupSchema.TIMEOUT_KEY, testTimeout);
-        map.put(CommonPropertyKeys.YIELD_PERIOD_KEY, testYieldPeriod);
-    }
-
-    @Test
-    public void testNoId() {
-        dto.setId(null);
-        map.remove(CommonPropertyKeys.ID_KEY);
-        assertDtoAndMapConstructorAreSame(1);
-    }
-
-    @Test
-    public void testNoName() {
-        dto.setName(null);
-        map.remove(CommonPropertyKeys.NAME_KEY);
-        assertDtoAndMapConstructorAreSame(0);
-    }
-
-    @Test
-    public void testNoUrl() {
-        dto.setTargetUri(null);
-        map.remove(RemoteProcessingGroupSchema.URL_KEY);
-        assertDtoAndMapConstructorAreSame(1);
-    }
-
-    @Test
-    public void testNoInputPorts() {
-        dto.getContents().setInputPorts(null);
-        map.remove(CommonPropertyKeys.INPUT_PORTS_KEY);
-        assertDtoAndMapConstructorAreSame(1);
-    }
-
-    @Test
-    public void testNoComment() {
-        dto.setComments(null);
-        map.remove(CommonPropertyKeys.COMMENT_KEY);
-        assertDtoAndMapConstructorAreSame(0);
-    }
-
-    @Test
-    public void testNoTimeout() {
-        dto.setCommunicationsTimeout(null);
-        map.remove(RemoteProcessingGroupSchema.TIMEOUT_KEY);
-        assertDtoAndMapConstructorAreSame(0);
-    }
-
-    @Test
-    public void testNoYield() {
-        dto.setYieldDuration(null);
-        map.remove(CommonPropertyKeys.YIELD_PERIOD_KEY);
-        assertDtoAndMapConstructorAreSame(0);
-    }
-
-    @Override
-    public void assertSchemaEquals(RemoteProcessingGroupSchema one, RemoteProcessingGroupSchema two) {
-        assertEquals(one.getName(), two.getName());
-        assertEquals(one.getUrl(), two.getUrl());
-
-        List<RemoteInputPortSchema> oneInputPorts = one.getInputPorts();
-        List<RemoteInputPortSchema> twoInputPorts = two.getInputPorts();
-        if (oneInputPorts == null) {
-            assertNull(twoInputPorts);
-        } else {
-            assertNotNull(twoInputPorts);
-            assertEquals(oneInputPorts.size(), twoInputPorts.size());
-            for (int i = 0; i < oneInputPorts.size(); i++) {
-                remoteInputPortSchemaTest.assertSchemaEquals(oneInputPorts.get(i), twoInputPorts.get(i));
-            }
-        }
-
-        assertEquals(one.getComment(), two.getComment());
-        assertEquals(one.getTimeout(), two.getTimeout());
-        assertEquals(one.getYieldPeriod(), two.getYieldPeriod());
-    }
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
index 3707335..eaa16c2 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
@@ -193,4 +193,4 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
index c27fb62..4d11eac 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
@@ -332,4 +332,4 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
index 30e33f4..a427409 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
@@ -281,13 +281,14 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups:
+Remote Process Groups:
 - id: d41d8cd9-8f00-3204-a980-0998ecf8427e
   name: ''
   url: http://nifi:8080/nifi
   comment: ''
   timeout: 30 sec
   yield period: 10 sec
+  transport protocol: RAW
   Input Ports:
   - name: response
     id: b23a4621-cf19-42e6-967c-ffd3716e6a24

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
index 4e3b479..8f8b038 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
@@ -150,4 +150,4 @@ Connections:
   max work queue data size: 1 GB
   flowfile expiration: 0 sec
   queue prioritizer class: ''
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.xml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.xml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.xml
index 8cd6f1b..d87c9b2 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.xml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.xml
@@ -441,7 +441,7 @@ limitations under the License.
           <proxyHost></proxyHost>
           <proxyUser></proxyUser>
           <targetUri>http://localhost:9090/nifi</targetUri>
-          <transportProtocol>RAW</transportProtocol>
+          <transportProtocol>HTTP</transportProtocol>
           <yieldDuration>10 sec</yieldDuration>
         </remoteProcessGroups>
       </contents>

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
index 064cd44..46be605 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
@@ -173,13 +173,14 @@ Process Groups:
       max work queue data size: 1 GB
       flowfile expiration: 0 sec
       queue prioritizer class: ''
-    Remote Processing Groups:
+    Remote Process Groups:
     - id: 21a651bb-0158-1000-0000-000000000000
       name: ''
       url: http://localhost:9091/nifi
       comment: ''
       timeout: 30 sec
       yield period: 10 sec
+      transport protocol: RAW
       Input Ports:
       - id: 21a39aba-0158-1000-a1a0-1b55bcddcd72
         name: input2
@@ -232,13 +233,14 @@ Process Groups:
     max work queue data size: 1 GB
     flowfile expiration: 0 sec
     queue prioritizer class: ''
-  Remote Processing Groups:
+  Remote Process Groups:
   - id: 21a4e2f0-0158-1000-0000-000000000000
     name: ''
     url: http://localhost:9090/nifi
     comment: ''
     timeout: 30 sec
     yield period: 10 sec
+    transport protocol: HTTP
     Input Ports:
     - id: 21a2fb5e-0158-1000-3b5e-5a7d3aaee01b
       name: input
@@ -278,4 +280,4 @@ Connections:
   max work queue data size: 1 GB
   flowfile expiration: 0 sec
   queue prioritizer class: ''
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
index 64a9108..cc89aa6 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
@@ -158,4 +158,4 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml
new file mode 100644
index 0000000..183d891
--- /dev/null
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml
@@ -0,0 +1,102 @@
+# 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.
+
+Flow Controller:
+  name: Simple TailFile To RPG
+  comment: ''
+Core Properties:
+  flow controller graceful shutdown period: 10 sec
+  flow service write delay interval: 500 ms
+  administrative yield duration: 30 sec
+  bored yield duration: 10 millis
+  max concurrent threads: 1
+FlowFile Repository:
+  partitions: 256
+  checkpoint interval: 2 mins
+  always sync: false
+  Swap:
+    threshold: 20000
+    in period: 5 sec
+    in threads: 1
+    out period: 5 sec
+    out threads: 4
+Content Repository:
+  content claim max appendable size: 10 MB
+  content claim max flow files: 100
+  always sync: false
+Provenance Repository:
+  provenance rollover time: 1 min
+Component Status Repository:
+  buffer size: 1440
+  snapshot frequency: 1 min
+Security Properties:
+  keystore: ''
+  keystore type: ''
+  keystore password: ''
+  key password: ''
+  truststore: ''
+  truststore type: ''
+  truststore password: ''
+  ssl protocol: ''
+  Sensitive Props:
+    key:
+    algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+    provider: BC
+Processors:
+- name: TailFile
+  class: org.apache.nifi.processors.standard.TailFile
+  max concurrent tasks: 1
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1 sec
+  penalization period: 30 sec
+  yield period: 1 sec
+  run duration nanos: 0
+  auto-terminated relationships list: []
+  Properties:
+    File Location: Local
+    File to Tail: ./logs/minifi-app.log
+    Initial Start Position: Beginning of File
+    Rolling Filename Pattern:
+    tail-base-directory:
+    tail-mode: Single file
+    tailfile-lookup-frequency: 10 minutes
+    tailfile-maximum-age: 24 hours
+    tailfile-recursive-lookup: 'false'
+    tailfile-rolling-strategy: Fixed name
+Connections:
+- name: TailFile/success/ac0e798c-0158-1000-0588-cda9b944e011
+  source name: TailFile
+  source relationship name: success
+  destination name: ac0e798c-0158-1000-0588-cda9b944e011
+  max work queue size: 10000
+  max work queue data size: 1 GB
+  flowfile expiration: 0 sec
+  queue prioritizer class: ''
+Remote Processing Groups:
+- url: http://localhost:8080/nifi
+  comment: ''
+  timeout: 30 sec
+  yield period: 10 sec
+  Input Ports:
+  - id: aca664f8-0158-1000-a139-92485891d349
+    name: test2
+    comment: ''
+    max concurrent tasks: 1
+    use compression: false
+  - id: ac0e798c-0158-1000-0588-cda9b944e011
+    name: test
+    comment: ''
+    max concurrent tasks: 1
+    use compression: false

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.xml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.xml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.xml
new file mode 100644
index 0000000..da88f2d
--- /dev/null
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" ?>
+<!--
+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.
+ -->
+<template encoding-version="1.0">
+  <description></description>
+  <groupId>92d57ac5-0158-1000-aab7-42ca398aadea</groupId>
+  <name>Simple TailFile To RPG</name>
+  <snippet>
+    <connections>
+      <id>b0c0c3cc-0158-1000-0000-000000000000</id>
+      <parentGroupId>92d57ac5-0158-1000-0000-000000000000</parentGroupId>
+      <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+      <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+      <destination>
+        <groupId>b0c09ff0-0158-1000-0000-000000000000</groupId>
+        <id>ac0e798c-0158-1000-0588-cda9b944e011</id>
+        <type>REMOTE_INPUT_PORT</type>
+      </destination>
+      <flowFileExpiration>0 sec</flowFileExpiration>
+      <labelIndex>1</labelIndex>
+      <name></name>
+      <selectedRelationships>success</selectedRelationships>
+      <source>
+        <groupId>92d57ac5-0158-1000-0000-000000000000</groupId>
+        <id>b0c04f28-0158-1000-0000-000000000000</id>
+        <type>PROCESSOR</type>
+      </source>
+      <zIndex>0</zIndex>
+    </connections>
+    <processors>
+      <id>b0c04f28-0158-1000-0000-000000000000</id>
+      <parentGroupId>92d57ac5-0158-1000-0000-000000000000</parentGroupId>
+      <position>
+        <x>20.698639744598154</x>
+        <y>0.0</y>
+      </position>
+      <config>
+        <bulletinLevel>WARN</bulletinLevel>
+        <comments></comments>
+        <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+        <descriptors>
+          <entry>
+            <key>tail-mode</key>
+            <value>
+              <name>tail-mode</name>
+            </value>
+          </entry>
+          <entry>
+            <key>File to Tail</key>
+            <value>
+              <name>File to Tail</name>
+            </value>
+          </entry>
+          <entry>
+            <key>Rolling Filename Pattern</key>
+            <value>
+              <name>Rolling Filename Pattern</name>
+            </value>
+          </entry>
+          <entry>
+            <key>tail-base-directory</key>
+            <value>
+              <name>tail-base-directory</name>
+            </value>
+          </entry>
+          <entry>
+            <key>Initial Start Position</key>
+            <value>
+              <name>Initial Start Position</name>
+            </value>
+          </entry>
+          <entry>
+            <key>File Location</key>
+            <value>
+              <name>File Location</name>
+            </value>
+          </entry>
+          <entry>
+            <key>tailfile-recursive-lookup</key>
+            <value>
+              <name>tailfile-recursive-lookup</name>
+            </value>
+          </entry>
+          <entry>
+            <key>tailfile-rolling-strategy</key>
+            <value>
+              <name>tailfile-rolling-strategy</name>
+            </value>
+          </entry>
+          <entry>
+            <key>tailfile-lookup-frequency</key>
+            <value>
+              <name>tailfile-lookup-frequency</name>
+            </value>
+          </entry>
+          <entry>
+            <key>tailfile-maximum-age</key>
+            <value>
+              <name>tailfile-maximum-age</name>
+            </value>
+          </entry>
+        </descriptors>
+        <executionNode>ALL</executionNode>
+        <lossTolerant>false</lossTolerant>
+        <penaltyDuration>30 sec</penaltyDuration>
+        <properties>
+          <entry>
+            <key>tail-mode</key>
+            <value>Single file</value>
+          </entry>
+          <entry>
+            <key>File to Tail</key>
+            <value>./logs/minifi-app.log</value>
+          </entry>
+          <entry>
+            <key>Rolling Filename Pattern</key>
+          </entry>
+          <entry>
+            <key>tail-base-directory</key>
+          </entry>
+          <entry>
+            <key>Initial Start Position</key>
+            <value>Beginning of File</value>
+          </entry>
+          <entry>
+            <key>File Location</key>
+            <value>Local</value>
+          </entry>
+          <entry>
+            <key>tailfile-recursive-lookup</key>
+            <value>false</value>
+          </entry>
+          <entry>
+            <key>tailfile-rolling-strategy</key>
+            <value>Fixed name</value>
+          </entry>
+          <entry>
+            <key>tailfile-lookup-frequency</key>
+            <value>10 minutes</value>
+          </entry>
+          <entry>
+            <key>tailfile-maximum-age</key>
+            <value>24 hours</value>
+          </entry>
+        </properties>
+        <runDurationMillis>0</runDurationMillis>
+        <schedulingPeriod>1 sec</schedulingPeriod>
+        <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+        <yieldDuration>1 sec</yieldDuration>
+      </config>
+      <name>TailFile</name>
+      <relationships>
+        <autoTerminate>false</autoTerminate>
+        <name>success</name>
+      </relationships>
+      <style></style>
+      <type>org.apache.nifi.processors.standard.TailFile</type>
+    </processors>
+    <remoteProcessGroups>
+      <id>b0c09ff0-0158-1000-0000-000000000000</id>
+      <parentGroupId>92d57ac5-0158-1000-0000-000000000000</parentGroupId>
+      <position>
+        <x>0.0</x>
+        <y>255.68887264079288</y>
+      </position>
+      <communicationsTimeout>30 sec</communicationsTimeout>
+      <contents>
+        <inputPorts>
+          <comments></comments>
+          <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+          <connected>false</connected>
+          <exists>true</exists>
+          <id>aca664f8-0158-1000-a139-92485891d349</id>
+          <name>test2</name>
+          <targetRunning>false</targetRunning>
+          <transmitting>false</transmitting>
+          <useCompression>false</useCompression>
+        </inputPorts>
+        <inputPorts>
+          <comments></comments>
+          <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+          <connected>true</connected>
+          <exists>true</exists>
+          <id>ac0e798c-0158-1000-0588-cda9b944e011</id>
+          <name>test</name>
+          <targetRunning>false</targetRunning>
+          <transmitting>false</transmitting>
+          <useCompression>false</useCompression>
+        </inputPorts>
+      </contents>
+      <proxyHost></proxyHost>
+      <proxyUser></proxyUser>
+      <targetUri>http://localhost:8080/nifi</targetUri>
+      <transportProtocol>RAW</transportProtocol>
+      <yieldDuration>10 sec</yieldDuration>
+    </remoteProcessGroups>
+  </snippet>
+  <timestamp>11/29/2016 10:43:33 EST</timestamp>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml
new file mode 100644
index 0000000..c70a018
--- /dev/null
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml
@@ -0,0 +1,113 @@
+# 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.
+
+MiNiFi Config Version: 2
+Flow Controller:
+  name: Simple TailFile To RPG
+  comment: ''
+Core Properties:
+  flow controller graceful shutdown period: 10 sec
+  flow service write delay interval: 500 ms
+  administrative yield duration: 30 sec
+  bored yield duration: 10 millis
+  max concurrent threads: 1
+FlowFile Repository:
+  partitions: 256
+  checkpoint interval: 2 mins
+  always sync: false
+  Swap:
+    threshold: 20000
+    in period: 5 sec
+    in threads: 1
+    out period: 5 sec
+    out threads: 4
+Content Repository:
+  content claim max appendable size: 10 MB
+  content claim max flow files: 100
+  always sync: false
+Provenance Repository:
+  provenance rollover time: 1 min
+Component Status Repository:
+  buffer size: 1440
+  snapshot frequency: 1 min
+Security Properties:
+  keystore: ''
+  keystore type: ''
+  keystore password: ''
+  key password: ''
+  truststore: ''
+  truststore type: ''
+  truststore password: ''
+  ssl protocol: ''
+  Sensitive Props:
+    key:
+    algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+    provider: BC
+Processors:
+- id: b0c04f28-0158-1000-0000-000000000000
+  name: TailFile
+  class: org.apache.nifi.processors.standard.TailFile
+  max concurrent tasks: 1
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1 sec
+  penalization period: 30 sec
+  yield period: 1 sec
+  run duration nanos: 0
+  auto-terminated relationships list: []
+  Properties:
+    File Location: Local
+    File to Tail: ./logs/minifi-app.log
+    Initial Start Position: Beginning of File
+    Rolling Filename Pattern:
+    tail-base-directory:
+    tail-mode: Single file
+    tailfile-lookup-frequency: 10 minutes
+    tailfile-maximum-age: 24 hours
+    tailfile-recursive-lookup: 'false'
+    tailfile-rolling-strategy: Fixed name
+Process Groups: []
+Input Ports: []
+Output Ports: []
+Funnels: []
+Connections:
+- id: b0c0c3cc-0158-1000-0000-000000000000
+  name: TailFile/success/ac0e798c-0158-1000-0588-cda9b944e011
+  source id: b0c04f28-0158-1000-0000-000000000000
+  source relationship names:
+  - success
+  destination id: ac0e798c-0158-1000-0588-cda9b944e011
+  max work queue size: 10000
+  max work queue data size: 1 GB
+  flowfile expiration: 0 sec
+  queue prioritizer class: ''
+Remote Process Groups:
+- id: b0c09ff0-0158-1000-0000-000000000000
+  name: ''
+  url: http://localhost:8080/nifi
+  comment: ''
+  timeout: 30 sec
+  yield period: 10 sec
+  transport protocol: RAW
+  Input Ports:
+  - id: aca664f8-0158-1000-a139-92485891d349
+    name: test2
+    comment: ''
+    max concurrent tasks: 1
+    use compression: false
+  - id: ac0e798c-0158-1000-0588-cda9b944e011
+    name: test
+    comment: ''
+    max concurrent tasks: 1
+    use compression: false

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
index 2df4526..b510f97 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
@@ -123,4 +123,4 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
index bbbda3a..95e8f52 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
@@ -208,4 +208,4 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups: []
\ No newline at end of file
+Remote Process Groups: []
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/config.yml
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/config.yml b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/config.yml
index b6a4902..c1685af 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/config.yml
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/config.yml
@@ -81,7 +81,7 @@ Connections:
   max work queue data size: 1 MB
   flowfile expiration: 60 sec
   queue prioritizer class: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer
-Remote Processing Groups:
+Remote Process Groups:
 - id: 94b8e610-b4ed-3ec9-b26f-c839931bf3e3
   name: NiFi Flow
   url: https://localhost:8090/nifi


[2/2] nifi-minifi git commit: MINIFI-137 Adding option to RPGs to transmit via HTTP. Also corrected a typo that had RPGs as 'Remote Processing Groups' instead of 'Remote Process Groups' (extra 'ing').

Posted by br...@apache.org.
MINIFI-137 Adding option to RPGs to transmit via HTTP. Also corrected a typo that had RPGs as 'Remote Processing Groups' instead of 'Remote Process Groups' (extra 'ing').

This closes #57

Signed-off-by: Bryan Rosander <br...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi/commit/98877d67
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi/tree/98877d67
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi/diff/98877d67

Branch: refs/heads/master
Commit: 98877d6742b1332420b7dc8767adb8b47b8b5486
Parents: d681f8f
Author: Joseph Percivall <JP...@apache.org>
Authored: Mon Nov 28 15:57:33 2016 -0500
Committer: Bryan Rosander <br...@apache.org>
Committed: Tue Nov 29 11:12:31 2016 -0500

----------------------------------------------------------------------
 .../bootstrap/util/ConfigTransformer.java       |  23 +-
 .../bootstrap/util/ParentGroupIdResolver.java   |   8 +-
 .../bootstrap/util/ConfigTransformerTest.java   |   8 +-
 .../util/ParentGroupIdResolverTest.java         |   4 +-
 .../bootstrap/util/TestConfigTransformer.java   |   2 +-
 .../test/resources/config-funnel-and-rpg.yml    |   2 +-
 .../test/resources/config-process-groups.yml    |   6 +-
 minifi-bootstrap/src/test/resources/config.yml  |   2 +-
 .../resources/stress-test-framework-funnel.yml  |   2 +-
 .../minifi/commons/schema/ConfigSchema.java     |  10 +-
 .../commons/schema/ProcessGroupSchema.java      |  14 +-
 .../schema/ProvenanceReportingSchema.java       |   2 +-
 .../schema/RemoteProcessGroupSchema.java        | 121 +++++++++++
 .../schema/RemoteProcessingGroupSchema.java     |  90 --------
 .../schema/common/CommonPropertyKeys.java       |   2 +-
 .../commons/schema/v1/ConfigSchemaV1.java       |  25 ++-
 .../schema/v1/RemoteProcessGroupSchemaV1.java   | 107 ++++++++++
 .../v1/RemoteProcessingGroupSchemaV1.java       | 107 ----------
 .../minifi/commons/schema/ConfigSchemaTest.java |  12 +-
 .../schema/RemoteProcessGroupSchemaTest.java    |  79 +++++++
 .../src/main/markdown/System_Admin_Guide.md     |  27 +--
 .../minifi/status/StatusConfigReporter.java     |   4 +-
 .../src/main/resources/conf/config.yml          |   2 +-
 .../configuration/dto/ConfigSchemaFunction.java |  18 +-
 .../dto/RemoteProcessGroupSchemaFunction.java   |  64 ++++++
 .../RemoteProcessingGroupSchemaFunction.java    |  63 ------
 .../toolkit/configuration/ConfigMainTest.java   |  19 +-
 .../dto/RemoteProcessGroupSchemaTest.java       | 161 ++++++++++++++
 .../dto/RemoteProcessingGroupSchemaTest.java    | 151 -------------
 .../src/test/resources/CsvToJson.yml            |   2 +-
 .../resources/DecompressionCircularFlow.yml     |   2 +-
 .../resources/InvokeHttpMiNiFiTemplateTest.yml  |   3 +-
 .../test/resources/MultipleRelationships.yml    |   2 +-
 .../ProcessGroupsAndRemoteProcessGroups.xml     |   2 +-
 .../ProcessGroupsAndRemoteProcessGroups.yml     |   8 +-
 ...aceTextExpressionLanguageCSVReformatting.yml |   2 +-
 .../test/resources/SimpleTailFileToRPG-v1.yml   | 102 +++++++++
 .../src/test/resources/SimpleTailFileToRPG.xml  | 213 +++++++++++++++++++
 .../src/test/resources/SimpleTailFileToRPG.yml  | 113 ++++++++++
 .../src/test/resources/StressTestFramework.yml  |   2 +-
 .../resources/StressTestFrameworkFunnel.yml     |   2 +-
 .../src/test/resources/config.yml               |   2 +-
 42 files changed, 1083 insertions(+), 507 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
index 98fccb5..3000fc8 100644
--- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
@@ -35,7 +35,7 @@ import org.apache.nifi.minifi.commons.schema.ProcessorSchema;
 import org.apache.nifi.minifi.commons.schema.ProvenanceReportingSchema;
 import org.apache.nifi.minifi.commons.schema.ProvenanceRepositorySchema;
 import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.common.ConvertableSchema;
 import org.apache.nifi.minifi.commons.schema.common.Schema;
 import org.apache.nifi.minifi.commons.schema.common.StringUtil;
@@ -385,8 +385,8 @@ public final class ConfigTransformer {
                 addProcessGroup(doc, processGroups, child, parentGroupIdResolver);
             }
 
-            for (RemoteProcessingGroupSchema remoteProcessingGroupSchema : processGroupSchema.getRemoteProcessingGroups()) {
-                addRemoteProcessGroup(element, remoteProcessingGroupSchema);
+            for (RemoteProcessGroupSchema remoteProcessGroupSchema : processGroupSchema.getRemoteProcessGroups()) {
+                addRemoteProcessGroup(element, remoteProcessGroupSchema);
             }
 
             for (ConnectionSchema connectionConfig : processGroupSchema.getConnections()) {
@@ -520,21 +520,22 @@ public final class ConfigTransformer {
         parentElement.appendChild(element);
     }
 
-    protected static void addRemoteProcessGroup(final Element parentElement, RemoteProcessingGroupSchema remoteProcessingGroupProperties) throws ConfigurationChangeException {
+    protected static void addRemoteProcessGroup(final Element parentElement, RemoteProcessGroupSchema remoteProcessGroupProperties) throws ConfigurationChangeException {
         try {
             final Document doc = parentElement.getOwnerDocument();
             final Element element = doc.createElement("remoteProcessGroup");
             parentElement.appendChild(element);
-            addTextElement(element, "id", remoteProcessingGroupProperties.getId());
-            addTextElement(element, "name", remoteProcessingGroupProperties.getName());
+            addTextElement(element, "id", remoteProcessGroupProperties.getId());
+            addTextElement(element, "name", remoteProcessGroupProperties.getName());
             addPosition(element);
-            addTextElement(element, "comment", remoteProcessingGroupProperties.getComment());
-            addTextElement(element, "url", remoteProcessingGroupProperties.getUrl());
-            addTextElement(element, "timeout", remoteProcessingGroupProperties.getTimeout());
-            addTextElement(element, "yieldPeriod", remoteProcessingGroupProperties.getYieldPeriod());
+            addTextElement(element, "comment", remoteProcessGroupProperties.getComment());
+            addTextElement(element, "url", remoteProcessGroupProperties.getUrl());
+            addTextElement(element, "timeout", remoteProcessGroupProperties.getTimeout());
+            addTextElement(element, "yieldPeriod", remoteProcessGroupProperties.getYieldPeriod());
             addTextElement(element, "transmitting", "true");
+            addTextElement(element, "transportProtocol", remoteProcessGroupProperties.getTransportProtocol());
 
-            List<RemoteInputPortSchema> remoteInputPorts = remoteProcessingGroupProperties.getInputPorts();
+            List<RemoteInputPortSchema> remoteInputPorts = remoteProcessGroupProperties.getInputPorts();
             for (RemoteInputPortSchema remoteInputPortSchema : remoteInputPorts) {
                 addRemoteGroupPort(element, remoteInputPortSchema);
             }

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolver.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolver.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolver.java
index 0d75823..3d266ad 100644
--- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolver.java
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolver.java
@@ -21,7 +21,7 @@ package org.apache.nifi.minifi.bootstrap.util;
 
 import org.apache.nifi.minifi.commons.schema.ProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.common.BaseSchemaWithId;
 
 import java.util.Collection;
@@ -63,9 +63,9 @@ public class ParentGroupIdResolver {
     }
 
     protected static void getRemoteInputPortParentIdMap(ProcessGroupSchema processGroupSchema, Map<String, String> output) {
-        for (RemoteProcessingGroupSchema remoteProcessingGroupSchema : processGroupSchema.getRemoteProcessingGroups()) {
-            for (RemoteInputPortSchema remoteInputPortSchema : remoteProcessingGroupSchema.getInputPorts()) {
-                output.put(remoteInputPortSchema.getId(), remoteProcessingGroupSchema.getId());
+        for (RemoteProcessGroupSchema remoteProcessGroupSchema : processGroupSchema.getRemoteProcessGroups()) {
+            for (RemoteInputPortSchema remoteInputPortSchema : remoteProcessGroupSchema.getInputPorts()) {
+                output.put(remoteInputPortSchema.getId(), remoteProcessGroupSchema.getId());
             }
         }
         processGroupSchema.getProcessGroupSchemas().forEach(p -> getRemoteInputPortParentIdMap(p, output));

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
index 4aff488..726b686 100644
--- a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
+++ b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
@@ -25,7 +25,7 @@ import org.apache.nifi.minifi.commons.schema.PortSchema;
 import org.apache.nifi.minifi.commons.schema.ProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.ProcessorSchema;
 import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.common.StringUtil;
 import org.apache.nifi.minifi.commons.schema.serialization.SchemaLoader;
 import org.junit.Before;
@@ -142,9 +142,9 @@ public class ConfigTransformerTest {
         }
 
         NodeList remoteProcessGroupElements = (NodeList) xPathFactory.newXPath().evaluate("remoteProcessGroup", element, XPathConstants.NODESET);
-        assertEquals(processGroupSchema.getRemoteProcessingGroups().size(), remoteProcessGroupElements.getLength());
+        assertEquals(processGroupSchema.getRemoteProcessGroups().size(), remoteProcessGroupElements.getLength());
         for (int i = 0; i < remoteProcessGroupElements.getLength(); i++) {
-            testRemoteProcessGroups((Element) remoteProcessGroupElements.item(i), processGroupSchema.getRemoteProcessingGroups().get(i));
+            testRemoteProcessGroups((Element) remoteProcessGroupElements.item(i), processGroupSchema.getRemoteProcessGroups().get(i));
         }
 
         NodeList funnelElements = (NodeList) xPathFactory.newXPath().evaluate("funnel", element, XPathConstants.NODESET);
@@ -192,7 +192,7 @@ public class ConfigTransformerTest {
         testProperties(element, processorSchema.getProperties());
     }
 
-    private void testRemoteProcessGroups(Element element, RemoteProcessingGroupSchema remoteProcessingGroupSchema) throws XPathExpressionException {
+    private void testRemoteProcessGroups(Element element, RemoteProcessGroupSchema remoteProcessingGroupSchema) throws XPathExpressionException {
         assertEquals(remoteProcessingGroupSchema.getId(), getText(element, "id"));
         assertEquals(remoteProcessingGroupSchema.getName(), getText(element, "name"));
         assertEquals(remoteProcessingGroupSchema.getComment(), getText(element, "comment"));

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolverTest.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolverTest.java b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolverTest.java
index 424c0fc..2855c29 100644
--- a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolverTest.java
+++ b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ParentGroupIdResolverTest.java
@@ -39,13 +39,13 @@ public class ParentGroupIdResolverTest {
     public void testRemoteInputPortParentId() throws IOException, SchemaLoaderException {
         List<String> configLines = new ArrayList<>();
         configLines.add("MiNiFi Config Version: 2");
-        configLines.add("Remote Processing Groups:");
+        configLines.add("Remote Process Groups:");
         configLines.add("- name: rpgOne");
         configLines.add("  id: rpgOneId");
         configLines.add("  Input Ports:");
         configLines.add("  - id: one");
         configLines.add("Process Groups:");
-        configLines.add("- Remote Processing Groups:");
+        configLines.add("- Remote Process Groups:");
         configLines.add("  - name: rpgTwo");
         configLines.add("    id: rpgTwoId");
         configLines.add("    Input Ports:");

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/TestConfigTransformer.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/TestConfigTransformer.java b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/TestConfigTransformer.java
index a0077fe..d644ed3 100644
--- a/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/TestConfigTransformer.java
+++ b/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/TestConfigTransformer.java
@@ -117,7 +117,7 @@ public class TestConfigTransformer {
     }
 
     @Test
-    public void doesTransformOnMultipleRemoteProcessingGroups() throws Exception {
+    public void doesTransformOnMultipleRemoteProcessGroups() throws Exception {
         ConfigTransformer.transformConfigFile("./src/test/resources/config-multiple-RPGs.yml", "./target/");
         File nifiPropertiesFile = new File("./target/nifi.properties");
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/resources/config-funnel-and-rpg.yml
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/resources/config-funnel-and-rpg.yml b/minifi-bootstrap/src/test/resources/config-funnel-and-rpg.yml
index bcc91d6..fd58662 100644
--- a/minifi-bootstrap/src/test/resources/config-funnel-and-rpg.yml
+++ b/minifi-bootstrap/src/test/resources/config-funnel-and-rpg.yml
@@ -151,7 +151,7 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: ''
-Remote Processing Groups:
+Remote Process Groups:
 - name: NiFi Flow
   url: http://localhost:8080/nifi
   comment: ''

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/resources/config-process-groups.yml
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/resources/config-process-groups.yml b/minifi-bootstrap/src/test/resources/config-process-groups.yml
index e0e5ef3..aa788db 100644
--- a/minifi-bootstrap/src/test/resources/config-process-groups.yml
+++ b/minifi-bootstrap/src/test/resources/config-process-groups.yml
@@ -172,7 +172,7 @@ Process Groups:
       max work queue data size: 1 GB
       flowfile expiration: 0 sec
       queue prioritizer class: ''
-    Remote Processing Groups:
+    Remote Process Groups:
     - name: http://localhost:9091/nifi
       url: http://localhost:9091/nifi
       comment: ''
@@ -229,7 +229,7 @@ Process Groups:
     max work queue data size: 1 GB
     flowfile expiration: 0 sec
     queue prioritizer class: ''
-  Remote Processing Groups:
+  Remote Process Groups:
   - name: http://localhost:9090/nifi
     url: http://localhost:9090/nifi
     comment: ''
@@ -273,4 +273,4 @@ Connections:
   max work queue data size: 1 GB
   flowfile expiration: 0 sec
   queue prioritizer class: ''
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/resources/config.yml
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/resources/config.yml b/minifi-bootstrap/src/test/resources/config.yml
index 46b3674..3b20902 100644
--- a/minifi-bootstrap/src/test/resources/config.yml
+++ b/minifi-bootstrap/src/test/resources/config.yml
@@ -81,7 +81,7 @@ Connections:
   max work queue data size: 1 MB
   flowfile expiration: 60 sec
   queue prioritizer class: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer
-Remote Processing Groups:
+Remote Process Groups:
 - id: 8644cbcc-a45c-40e0-964d-4d243afcbbb2
   name: NiFi Flow
   url: https://localhost:8090/nifi

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-bootstrap/src/test/resources/stress-test-framework-funnel.yml
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/test/resources/stress-test-framework-funnel.yml b/minifi-bootstrap/src/test/resources/stress-test-framework-funnel.yml
index bbbda3a..95e8f52 100644
--- a/minifi-bootstrap/src/test/resources/stress-test-framework-funnel.yml
+++ b/minifi-bootstrap/src/test/resources/stress-test-framework-funnel.yml
@@ -208,4 +208,4 @@ Connections:
   max work queue data size: 0 MB
   flowfile expiration: 0 sec
   queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
-Remote Processing Groups: []
\ No newline at end of file
+Remote Process Groups: []
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
index 333adf8..0f5d7e9 100644
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
@@ -54,7 +54,7 @@ public class ConfigSchema extends BaseSchema implements WritableSchema, Converta
     public static final String FOUND_THE_FOLLOWING_DUPLICATE_PROCESSOR_IDS = "Found the following duplicate processor ids: ";
     public static final String FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_IDS = "Found the following duplicate connection ids: ";
     public static final String FOUND_THE_FOLLOWING_DUPLICATE_FUNNEL_IDS = "Found the following duplicate funnel ids: ";
-    public static final String FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES = "Found the following duplicate remote processing group names: ";
+    public static final String FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES = "Found the following duplicate remote process group names: ";
     public static String TOP_LEVEL_NAME = "top level";
     private FlowControllerSchema flowControllerProperties;
     private CorePropertiesSchema coreProperties;
@@ -98,13 +98,13 @@ public class ConfigSchema extends BaseSchema implements WritableSchema, Converta
 
         List<ProcessGroupSchema> allProcessGroups = getAllProcessGroups(processGroupSchema);
         List<ConnectionSchema> allConnectionSchemas = allProcessGroups.stream().flatMap(p -> p.getConnections().stream()).collect(Collectors.toList());
-        List<RemoteProcessingGroupSchema> allRemoteProcessingGroups = allProcessGroups.stream().flatMap(p -> p.getRemoteProcessingGroups().stream()).collect(Collectors.toList());
+        List<RemoteProcessGroupSchema> allRemoteProcessGroups = allProcessGroups.stream().flatMap(p -> p.getRemoteProcessGroups().stream()).collect(Collectors.toList());
 
         List<String> allProcessorIds = allProcessGroups.stream().flatMap(p -> p.getProcessors().stream()).map(ProcessorSchema::getId).collect(Collectors.toList());
         List<String> allFunnelIds = allProcessGroups.stream().flatMap(p -> p.getFunnels().stream()).map(FunnelSchema::getId).collect(Collectors.toList());
         List<String> allConnectionIds = allConnectionSchemas.stream().map(ConnectionSchema::getId).collect(Collectors.toList());
-        List<String> allRemoteProcessingGroupNames = allRemoteProcessingGroups.stream().map(RemoteProcessingGroupSchema::getName).collect(Collectors.toList());
-        List<String> allRemoteInputPortIds = allRemoteProcessingGroups.stream().filter(r -> r.getInputPorts() != null)
+        List<String> allRemoteProcessGroupNames = allRemoteProcessGroups.stream().map(RemoteProcessGroupSchema::getName).collect(Collectors.toList());
+        List<String> allRemoteInputPortIds = allRemoteProcessGroups.stream().filter(r -> r.getInputPorts() != null)
                 .flatMap(r -> r.getInputPorts().stream()).map(RemoteInputPortSchema::getId).collect(Collectors.toList());
         List<String> allInputPortIds = allProcessGroups.stream().flatMap(p -> p.getInputPortSchemas().stream()).map(PortSchema::getId).collect(Collectors.toList());
         List<String> allOutputPortIds = allProcessGroups.stream().flatMap(p -> p.getOutputPortSchemas().stream()).map(PortSchema::getId).collect(Collectors.toList());
@@ -112,7 +112,7 @@ public class ConfigSchema extends BaseSchema implements WritableSchema, Converta
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_PROCESSOR_IDS, allProcessorIds);
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_FUNNEL_IDS, allFunnelIds);
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_IDS, allConnectionIds);
-        checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES, allRemoteProcessingGroupNames);
+        checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES, allRemoteProcessGroupNames);
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_INPUT_PORT_IDS, allRemoteInputPortIds);
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_INPUT_PORT_IDS, allInputPortIds);
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_OUTPUT_PORT_IDS, allOutputPortIds);

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProcessGroupSchema.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProcessGroupSchema.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProcessGroupSchema.java
index be7f9fc..028f666 100644
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProcessGroupSchema.java
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProcessGroupSchema.java
@@ -37,7 +37,7 @@ import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.IN
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.NAME_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.OUTPUT_PORTS_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.PROCESSORS_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.REMOTE_PROCESSING_GROUPS_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY;
 
 public class ProcessGroupSchema extends BaseSchemaWithIdAndName implements WritableSchema, ConvertableSchema<ProcessGroupSchema> {
 
@@ -48,7 +48,7 @@ public class ProcessGroupSchema extends BaseSchemaWithIdAndName implements Writa
     private List<ProcessorSchema> processors;
     private List<FunnelSchema> funnels;
     private List<ConnectionSchema> connections;
-    private List<RemoteProcessingGroupSchema> remoteProcessingGroups;
+    private List<RemoteProcessGroupSchema> remoteProcessGroups;
     private List<ProcessGroupSchema> processGroupSchemas;
     private List<PortSchema> inputPortSchemas;
     private List<PortSchema> outputPortSchemas;
@@ -58,7 +58,7 @@ public class ProcessGroupSchema extends BaseSchemaWithIdAndName implements Writa
 
         processors = getOptionalKeyAsList(map, PROCESSORS_KEY, ProcessorSchema::new, wrapperName);
         funnels = getOptionalKeyAsList(map, FUNNELS_KEY, FunnelSchema::new, wrapperName);
-        remoteProcessingGroups = getOptionalKeyAsList(map, REMOTE_PROCESSING_GROUPS_KEY, RemoteProcessingGroupSchema::new, wrapperName);
+        remoteProcessGroups = getOptionalKeyAsList(map, REMOTE_PROCESS_GROUPS_KEY, RemoteProcessGroupSchema::new, wrapperName);
         connections = getOptionalKeyAsList(map, CONNECTIONS_KEY, ConnectionSchema::new, wrapperName);
         inputPortSchemas = getOptionalKeyAsList(map, INPUT_PORTS_KEY, m -> new PortSchema(m, "InputPort(id: {id}, name: {name})"), wrapperName);
         outputPortSchemas = getOptionalKeyAsList(map, OUTPUT_PORTS_KEY, m -> new PortSchema(m, "OutputPort(id: {id}, name: {name})"), wrapperName);
@@ -83,7 +83,7 @@ public class ProcessGroupSchema extends BaseSchemaWithIdAndName implements Writa
         connections.stream().filter(c -> funnelIds.contains(c.getSourceId())).forEachOrdered(c -> c.setNeedsSourceRelationships(false));
 
         addIssuesIfNotNull(processors);
-        addIssuesIfNotNull(remoteProcessingGroups);
+        addIssuesIfNotNull(remoteProcessGroups);
         addIssuesIfNotNull(processGroupSchemas);
         addIssuesIfNotNull(funnels);
         addIssuesIfNotNull(connections);
@@ -102,7 +102,7 @@ public class ProcessGroupSchema extends BaseSchemaWithIdAndName implements Writa
         putListIfNotNull(result, OUTPUT_PORTS_KEY, outputPortSchemas);
         putListIfNotNull(result, FUNNELS_KEY, funnels);
         putListIfNotNull(result, CONNECTIONS_KEY, connections);
-        putListIfNotNull(result, REMOTE_PROCESSING_GROUPS_KEY, remoteProcessingGroups);
+        putListIfNotNull(result, REMOTE_PROCESS_GROUPS_KEY, remoteProcessGroups);
         return result;
     }
 
@@ -118,8 +118,8 @@ public class ProcessGroupSchema extends BaseSchemaWithIdAndName implements Writa
         return connections;
     }
 
-    public List<RemoteProcessingGroupSchema> getRemoteProcessingGroups() {
-        return remoteProcessingGroups;
+    public List<RemoteProcessGroupSchema> getRemoteProcessGroups() {
+        return remoteProcessGroups;
     }
 
     public List<ProcessGroupSchema> getProcessGroupSchemas() {

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProvenanceReportingSchema.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProvenanceReportingSchema.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProvenanceReportingSchema.java
index 6490511..d197ccb 100644
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProvenanceReportingSchema.java
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ProvenanceReportingSchema.java
@@ -28,7 +28,7 @@ import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.PR
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.SCHEDULING_PERIOD_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.SCHEDULING_STRATEGY_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.USE_COMPRESSION_KEY;
-import static org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema.TIMEOUT_KEY;
+import static org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema.TIMEOUT_KEY;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchema.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchema.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchema.java
new file mode 100644
index 0000000..ccec389
--- /dev/null
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchema.java
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+
+package org.apache.nifi.minifi.commons.schema;
+
+import org.apache.nifi.minifi.commons.schema.common.BaseSchemaWithIdAndName;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.COMMENT_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.INPUT_PORTS_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.YIELD_PERIOD_KEY;
+
+public class RemoteProcessGroupSchema extends BaseSchemaWithIdAndName {
+    public static final String URL_KEY = "url";
+    public static final String TIMEOUT_KEY = "timeout";
+    public static final String TRANSPORT_PROTOCOL_KEY = "transport protocol";
+
+    private enum transportProtocolOptions {
+        RAW("RAW"), HTTP("HTTP");
+
+        private final String stringValue;
+
+        private transportProtocolOptions(final String s) {
+            stringValue = s;
+        }
+
+        public String toString() {
+            return stringValue;
+        }
+
+        public static boolean valid(String input) {
+            return RAW.stringValue.equals(input) || HTTP.stringValue.equals(input);
+        }
+    }
+
+    public static final String DEFAULT_COMMENT = "";
+    public static final String DEFAULT_TIMEOUT = "30 secs";
+    public static final String DEFAULT_YIELD_PERIOD = "10 sec";
+    public static final String DEFAULT_TRANSPORT_PROTOCOL= "RAW";
+
+    private String url;
+    private List<RemoteInputPortSchema> inputPorts;
+
+    private String comment = DEFAULT_COMMENT;
+    private String timeout = DEFAULT_TIMEOUT;
+    private String yieldPeriod = DEFAULT_YIELD_PERIOD;
+    private String transportProtocol = DEFAULT_TRANSPORT_PROTOCOL;
+
+    public RemoteProcessGroupSchema(Map map) {
+        super(map, "RemoteProcessGroup(id: {id}, name: {name})");
+        String wrapperName = getWrapperName();
+        url = getRequiredKeyAsType(map, URL_KEY, String.class, wrapperName);
+        inputPorts = convertListToType(getRequiredKeyAsType(map, INPUT_PORTS_KEY, List.class, wrapperName), "input port", RemoteInputPortSchema.class, INPUT_PORTS_KEY);
+        if (inputPorts != null) {
+            for (RemoteInputPortSchema remoteInputPortSchema: inputPorts) {
+                addIssuesIfNotNull(remoteInputPortSchema);
+            }
+        }
+
+        comment = getOptionalKeyAsType(map, COMMENT_KEY, String.class, wrapperName, DEFAULT_COMMENT);
+        timeout = getOptionalKeyAsType(map, TIMEOUT_KEY, String.class, wrapperName, DEFAULT_TIMEOUT);
+        yieldPeriod = getOptionalKeyAsType(map, YIELD_PERIOD_KEY, String.class, wrapperName, DEFAULT_YIELD_PERIOD);
+        transportProtocol = getOptionalKeyAsType(map, TRANSPORT_PROTOCOL_KEY, String.class, wrapperName, DEFAULT_TRANSPORT_PROTOCOL);
+
+        if (!transportProtocolOptions.valid(transportProtocol)){
+            addValidationIssue(TRANSPORT_PROTOCOL_KEY, wrapperName, "it must be either 'RAW' or 'HTTP' but is '" + transportProtocol + "'");
+        }
+    }
+
+    @Override
+    public Map<String, Object> toMap() {
+        Map<String, Object> result = super.toMap();
+        result.put(URL_KEY, url);
+        result.put(COMMENT_KEY, comment);
+        result.put(TIMEOUT_KEY, timeout);
+        result.put(YIELD_PERIOD_KEY, yieldPeriod);
+        result.put(TRANSPORT_PROTOCOL_KEY, transportProtocol);
+        putListIfNotNull(result, INPUT_PORTS_KEY, inputPorts);
+        return result;
+    }
+
+    public String getComment() {
+        return comment;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public String getTimeout() {
+        return timeout;
+    }
+
+    public String getYieldPeriod() {
+        return yieldPeriod;
+    }
+
+    public List<RemoteInputPortSchema> getInputPorts() {
+        return inputPorts;
+    }
+
+    public String getTransportProtocol() {
+        return transportProtocol;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessingGroupSchema.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessingGroupSchema.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessingGroupSchema.java
deleted file mode 100644
index 44109de..0000000
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/RemoteProcessingGroupSchema.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.nifi.minifi.commons.schema;
-
-import org.apache.nifi.minifi.commons.schema.common.BaseSchemaWithIdAndName;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.COMMENT_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.INPUT_PORTS_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.YIELD_PERIOD_KEY;
-
-public class RemoteProcessingGroupSchema extends BaseSchemaWithIdAndName {
-    public static final String URL_KEY = "url";
-    public static final String TIMEOUT_KEY = "timeout";
-
-    public static final String DEFAULT_COMMENT = "";
-    public static final String DEFAULT_TIMEOUT = "30 secs";
-    public static final String DEFAULT_YIELD_PERIOD = "10 sec";
-
-    private String url;
-    private List<RemoteInputPortSchema> inputPorts;
-
-    private String comment = DEFAULT_COMMENT;
-    private String timeout = DEFAULT_TIMEOUT;
-    private String yieldPeriod = DEFAULT_YIELD_PERIOD;
-
-    public RemoteProcessingGroupSchema(Map map) {
-        super(map, "RemoteProcessingGroup(id: {id}, name: {name})");
-        String wrapperName = getWrapperName();
-        url = getRequiredKeyAsType(map, URL_KEY, String.class, wrapperName);
-        inputPorts = convertListToType(getRequiredKeyAsType(map, INPUT_PORTS_KEY, List.class, wrapperName), "input port", RemoteInputPortSchema.class, INPUT_PORTS_KEY);
-        if (inputPorts != null) {
-            for (RemoteInputPortSchema remoteInputPortSchema: inputPorts) {
-                addIssuesIfNotNull(remoteInputPortSchema);
-            }
-        }
-
-        comment = getOptionalKeyAsType(map, COMMENT_KEY, String.class, wrapperName, DEFAULT_COMMENT);
-        timeout = getOptionalKeyAsType(map, TIMEOUT_KEY, String.class, wrapperName, DEFAULT_TIMEOUT);
-        yieldPeriod = getOptionalKeyAsType(map, YIELD_PERIOD_KEY, String.class, wrapperName, DEFAULT_YIELD_PERIOD);
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> result = super.toMap();
-        result.put(URL_KEY, url);
-        result.put(COMMENT_KEY, comment);
-        result.put(TIMEOUT_KEY, timeout);
-        result.put(YIELD_PERIOD_KEY, yieldPeriod);
-        putListIfNotNull(result, INPUT_PORTS_KEY, inputPorts);
-        return result;
-    }
-
-    public String getComment() {
-        return comment;
-    }
-
-    public String getUrl() {
-        return url;
-    }
-
-    public String getTimeout() {
-        return timeout;
-    }
-
-    public String getYieldPeriod() {
-        return yieldPeriod;
-    }
-
-    public List<RemoteInputPortSchema> getInputPorts() {
-        return inputPorts;
-    }
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/common/CommonPropertyKeys.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/common/CommonPropertyKeys.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/common/CommonPropertyKeys.java
index dcf0500..4efb258 100644
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/common/CommonPropertyKeys.java
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/common/CommonPropertyKeys.java
@@ -29,7 +29,7 @@ public class CommonPropertyKeys {
     public static final String PROCESSORS_KEY = "Processors";
     public static final String CONNECTIONS_KEY = "Connections";
     public static final String PROVENANCE_REPORTING_KEY = "Provenance Reporting";
-    public static final String REMOTE_PROCESSING_GROUPS_KEY = "Remote Processing Groups";
+    public static final String REMOTE_PROCESS_GROUPS_KEY = "Remote Process Groups";
     public static final String INPUT_PORTS_KEY = "Input Ports";
     public static final String OUTPUT_PORTS_KEY = "Output Ports";
     public static final String FUNNELS_KEY = "Funnels";

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/ConfigSchemaV1.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/ConfigSchemaV1.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/ConfigSchemaV1.java
index 526c92b..37f34b1 100644
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/ConfigSchemaV1.java
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/ConfigSchemaV1.java
@@ -30,7 +30,7 @@ import org.apache.nifi.minifi.commons.schema.ProcessorSchema;
 import org.apache.nifi.minifi.commons.schema.ProvenanceReportingSchema;
 import org.apache.nifi.minifi.commons.schema.ProvenanceRepositorySchema;
 import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.SecurityPropertiesSchema;
 import org.apache.nifi.minifi.commons.schema.common.BaseSchema;
 import org.apache.nifi.minifi.commons.schema.common.ConvertableSchema;
@@ -57,10 +57,13 @@ import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.FL
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.PROCESSORS_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.PROVENANCE_REPORTING_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.PROVENANCE_REPO_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.REMOTE_PROCESSING_GROUPS_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY;
 import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.SECURITY_PROPS_KEY;
 
 public class ConfigSchemaV1 extends BaseSchema implements ConvertableSchema<ConfigSchema> {
+
+    public static final String REMOTE_PROCESS_GROUPS_KEY_V1 = "Remote Processing Groups";
+
     public static final String FOUND_THE_FOLLOWING_DUPLICATE_PROCESSOR_NAMES = "Found the following duplicate processor names: ";
     public static final String FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_NAMES = "Found the following duplicate connection names: ";
     public static final String FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES = "Found the following duplicate remote processing group names: ";
@@ -77,7 +80,7 @@ public class ConfigSchemaV1 extends BaseSchema implements ConvertableSchema<Conf
     private SecurityPropertiesSchema securityProperties;
     private List<ProcessorSchemaV1> processors;
     private List<ConnectionSchemaV1> connections;
-    private List<RemoteProcessingGroupSchemaV1> remoteProcessingGroups;
+    private List<RemoteProcessGroupSchemaV1> remoteProcessingGroups;
     private ProvenanceReportingSchema provenanceReportingProperties;
 
     private ProvenanceRepositorySchema provenanceRepositorySchema;
@@ -94,8 +97,8 @@ public class ConfigSchemaV1 extends BaseSchema implements ConvertableSchema<Conf
 
         processors = convertListToType(getOptionalKeyAsType(map, PROCESSORS_KEY, List.class, TOP_LEVEL_NAME, new ArrayList<>()), PROCESSORS_KEY, ProcessorSchemaV1.class, TOP_LEVEL_NAME);
 
-        remoteProcessingGroups = convertListToType(getOptionalKeyAsType(map, REMOTE_PROCESSING_GROUPS_KEY, List.class, TOP_LEVEL_NAME, new ArrayList<>()), "remote processing group",
-                RemoteProcessingGroupSchemaV1.class, REMOTE_PROCESSING_GROUPS_KEY);
+        remoteProcessingGroups = convertListToType(getOptionalKeyAsType(map, REMOTE_PROCESS_GROUPS_KEY_V1, List.class, TOP_LEVEL_NAME, new ArrayList<>()), "remote processing group",
+                RemoteProcessGroupSchemaV1.class, REMOTE_PROCESS_GROUPS_KEY_V1);
 
         connections = convertListToType(getOptionalKeyAsType(map, CONNECTIONS_KEY, List.class, TOP_LEVEL_NAME, new ArrayList<>()), CONNECTIONS_KEY, ConnectionSchemaV1.class, TOP_LEVEL_NAME);
 
@@ -117,7 +120,7 @@ public class ConfigSchemaV1 extends BaseSchema implements ConvertableSchema<Conf
 
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_PROCESSOR_NAMES, processorNames);
         checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_NAMES, connections.stream().map(ConnectionSchemaV1::getName).collect(Collectors.toList()));
-        checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES, remoteProcessingGroups.stream().map(RemoteProcessingGroupSchemaV1::getName)
+        checkForDuplicates(this::addValidationIssue, FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES, remoteProcessingGroups.stream().map(RemoteProcessGroupSchemaV1::getName)
                 .collect(Collectors.toList()));
 
         Set<String> connectableNames = new HashSet<>(processorNames);
@@ -214,12 +217,12 @@ public class ConfigSchemaV1 extends BaseSchema implements ConvertableSchema<Conf
         return connectionSchemas;
     }
 
-    protected List<RemoteProcessingGroupSchema> getRemoteProcessingGroupSchemas() {
+    protected List<RemoteProcessGroupSchema> getRemoteProcessGroupSchemas() {
         Set<UUID> ids = new HashSet<>();
-        List<RemoteProcessingGroupSchema> rpgSchemas= new ArrayList<>(remoteProcessingGroups.size());
+        List<RemoteProcessGroupSchema> rpgSchemas= new ArrayList<>(remoteProcessingGroups.size());
 
-        for (RemoteProcessingGroupSchemaV1 rpg : remoteProcessingGroups) {
-            RemoteProcessingGroupSchema rpgSchema = rpg.convert();
+        for (RemoteProcessGroupSchemaV1 rpg : remoteProcessingGroups) {
+            RemoteProcessGroupSchema rpgSchema = rpg.convert();
             rpgSchema.setId(getUniqueId(ids, rpgSchema.getName()));
             rpgSchemas.add(rpgSchema);
         }
@@ -242,7 +245,7 @@ public class ConfigSchemaV1 extends BaseSchema implements ConvertableSchema<Conf
         putListIfNotNull(map, PROCESSORS_KEY, processorSchemas);
         List<String> validationIssues = getValidationIssues();
         putListIfNotNull(map, CONNECTIONS_KEY, getConnectionSchemas(processorSchemas, validationIssues));
-        putListIfNotNull(map, REMOTE_PROCESSING_GROUPS_KEY, getRemoteProcessingGroupSchemas());
+        putListIfNotNull(map, REMOTE_PROCESS_GROUPS_KEY, getRemoteProcessGroupSchemas());
         putIfNotNull(map, PROVENANCE_REPORTING_KEY, provenanceReportingProperties);
         return new ConfigSchema(map, validationIssues);
     }

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessGroupSchemaV1.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessGroupSchemaV1.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessGroupSchemaV1.java
new file mode 100644
index 0000000..fe1fd4f
--- /dev/null
+++ b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessGroupSchemaV1.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+
+package org.apache.nifi.minifi.commons.schema.v1;
+
+import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
+import org.apache.nifi.minifi.commons.schema.common.BaseSchema;
+import org.apache.nifi.minifi.commons.schema.common.ConvertableSchema;
+import org.apache.nifi.minifi.commons.schema.common.StringUtil;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.COMMENT_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.INPUT_PORTS_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.NAME_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY;
+import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.YIELD_PERIOD_KEY;
+
+public class RemoteProcessGroupSchemaV1 extends BaseSchema implements ConvertableSchema<RemoteProcessGroupSchema> {
+    public static final String URL_KEY = "url";
+    public static final String TIMEOUT_KEY = "timeout";
+
+    public static final String DEFAULT_COMMENT = "";
+    public static final String DEFAULT_TIMEOUT = "30 secs";
+    public static final String DEFAULT_YIELD_PERIOD = "10 sec";
+
+    private String name;
+    private String url;
+    private List<RemoteInputPortSchema> inputPorts;
+
+    private String comment = DEFAULT_COMMENT;
+    private String timeout = DEFAULT_TIMEOUT;
+    private String yieldPeriod = DEFAULT_YIELD_PERIOD;
+
+    public RemoteProcessGroupSchemaV1(Map map) {
+        name = getRequiredKeyAsType(map, NAME_KEY, String.class, REMOTE_PROCESS_GROUPS_KEY);
+        String wrapperName = new StringBuilder("RemoteProcessingGroup(name: ").append(StringUtil.isNullOrEmpty(name) ? "unknown" : name).append(")").toString();
+        url = getRequiredKeyAsType(map, URL_KEY, String.class, wrapperName);
+        inputPorts = convertListToType(getRequiredKeyAsType(map, INPUT_PORTS_KEY, List.class, wrapperName), "input port", RemoteInputPortSchema.class, INPUT_PORTS_KEY);
+        if (inputPorts != null) {
+            for (RemoteInputPortSchema remoteInputPortSchema : inputPorts) {
+                addIssuesIfNotNull(remoteInputPortSchema);
+            }
+        }
+
+        comment = getOptionalKeyAsType(map, COMMENT_KEY, String.class, wrapperName, DEFAULT_COMMENT);
+        timeout = getOptionalKeyAsType(map, TIMEOUT_KEY, String.class, wrapperName, DEFAULT_TIMEOUT);
+        yieldPeriod = getOptionalKeyAsType(map, YIELD_PERIOD_KEY, String.class, wrapperName, DEFAULT_YIELD_PERIOD);
+    }
+
+    @Override
+    public RemoteProcessGroupSchema convert() {
+        Map<String, Object> result = mapSupplier.get();
+        result.put(NAME_KEY, name);
+        result.put(URL_KEY, url);
+        result.put(COMMENT_KEY, comment);
+        result.put(TIMEOUT_KEY, timeout);
+        result.put(YIELD_PERIOD_KEY, yieldPeriod);
+        putListIfNotNull(result, INPUT_PORTS_KEY, inputPorts);
+        return new RemoteProcessGroupSchema(result);
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getComment() {
+        return comment;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public String getTimeout() {
+        return timeout;
+    }
+
+    public String getYieldPeriod() {
+        return yieldPeriod;
+    }
+
+    public List<RemoteInputPortSchema> getInputPorts() {
+        return inputPorts;
+    }
+
+    @Override
+    public int getVersion() {
+        return ConfigSchemaV1.CONFIG_VERSION;
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessingGroupSchemaV1.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessingGroupSchemaV1.java b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessingGroupSchemaV1.java
deleted file mode 100644
index a6d2d62..0000000
--- a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v1/RemoteProcessingGroupSchemaV1.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.nifi.minifi.commons.schema.v1;
-
-import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
-import org.apache.nifi.minifi.commons.schema.common.BaseSchema;
-import org.apache.nifi.minifi.commons.schema.common.ConvertableSchema;
-import org.apache.nifi.minifi.commons.schema.common.StringUtil;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.COMMENT_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.INPUT_PORTS_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.NAME_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.REMOTE_PROCESSING_GROUPS_KEY;
-import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.YIELD_PERIOD_KEY;
-
-public class RemoteProcessingGroupSchemaV1 extends BaseSchema implements ConvertableSchema<RemoteProcessingGroupSchema> {
-    public static final String URL_KEY = "url";
-    public static final String TIMEOUT_KEY = "timeout";
-
-    public static final String DEFAULT_COMMENT = "";
-    public static final String DEFAULT_TIMEOUT = "30 secs";
-    public static final String DEFAULT_YIELD_PERIOD = "10 sec";
-
-    private String name;
-    private String url;
-    private List<RemoteInputPortSchema> inputPorts;
-
-    private String comment = DEFAULT_COMMENT;
-    private String timeout = DEFAULT_TIMEOUT;
-    private String yieldPeriod = DEFAULT_YIELD_PERIOD;
-
-    public RemoteProcessingGroupSchemaV1(Map map) {
-        name = getRequiredKeyAsType(map, NAME_KEY, String.class, REMOTE_PROCESSING_GROUPS_KEY);
-        String wrapperName = new StringBuilder("RemoteProcessingGroup(name: ").append(StringUtil.isNullOrEmpty(name) ? "unknown" : name).append(")").toString();
-        url = getRequiredKeyAsType(map, URL_KEY, String.class, wrapperName);
-        inputPorts = convertListToType(getRequiredKeyAsType(map, INPUT_PORTS_KEY, List.class, wrapperName), "input port", RemoteInputPortSchema.class, INPUT_PORTS_KEY);
-        if (inputPorts != null) {
-            for (RemoteInputPortSchema remoteInputPortSchema : inputPorts) {
-                addIssuesIfNotNull(remoteInputPortSchema);
-            }
-        }
-
-        comment = getOptionalKeyAsType(map, COMMENT_KEY, String.class, wrapperName, DEFAULT_COMMENT);
-        timeout = getOptionalKeyAsType(map, TIMEOUT_KEY, String.class, wrapperName, DEFAULT_TIMEOUT);
-        yieldPeriod = getOptionalKeyAsType(map, YIELD_PERIOD_KEY, String.class, wrapperName, DEFAULT_YIELD_PERIOD);
-    }
-
-    @Override
-    public RemoteProcessingGroupSchema convert() {
-        Map<String, Object> result = mapSupplier.get();
-        result.put(NAME_KEY, name);
-        result.put(URL_KEY, url);
-        result.put(COMMENT_KEY, comment);
-        result.put(TIMEOUT_KEY, timeout);
-        result.put(YIELD_PERIOD_KEY, yieldPeriod);
-        putListIfNotNull(result, INPUT_PORTS_KEY, inputPorts);
-        return new RemoteProcessingGroupSchema(result);
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getComment() {
-        return comment;
-    }
-
-    public String getUrl() {
-        return url;
-    }
-
-    public String getTimeout() {
-        return timeout;
-    }
-
-    public String getYieldPeriod() {
-        return yieldPeriod;
-    }
-
-    public List<RemoteInputPortSchema> getInputPorts() {
-        return inputPorts;
-    }
-
-    @Override
-    public int getVersion() {
-        return ConfigSchemaV1.CONFIG_VERSION;
-    }
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java b/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
index 83b5525..0037bce 100644
--- a/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
+++ b/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
@@ -79,15 +79,15 @@ public class ConfigSchemaTest {
     }
 
     @Test
-    public void testRemoteProcessingGroupDuplicateValidationNegativeCase() {
-        ConfigSchema configSchema = new ConfigSchema(Collections.singletonMap(CommonPropertyKeys.REMOTE_PROCESSING_GROUPS_KEY, getListWithNames("testName1", "testName2")));
-        assertMessageDoesNotExist(configSchema, ConfigSchema.FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES);
+    public void testRemoteProcessGroupDuplicateValidationNegativeCase() {
+        ConfigSchema configSchema = new ConfigSchema(Collections.singletonMap(CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY, getListWithNames("testName1", "testName2")));
+        assertMessageDoesNotExist(configSchema, ConfigSchema.FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES);
     }
 
     @Test
-    public void testRemoteProcessingGroupDuplicateValidationPositiveCase() {
-        ConfigSchema configSchema = new ConfigSchema(Collections.singletonMap(CommonPropertyKeys.REMOTE_PROCESSING_GROUPS_KEY, getListWithNames("testName1", "testName1")));
-        assertMessageDoesExist(configSchema, ConfigSchema.FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESSING_GROUP_NAMES);
+    public void testRemoteProcessGroupDuplicateValidationPositiveCase() {
+        ConfigSchema configSchema = new ConfigSchema(Collections.singletonMap(CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY, getListWithNames("testName1", "testName1")));
+        assertMessageDoesExist(configSchema, ConfigSchema.FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchemaTest.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchemaTest.java b/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchemaTest.java
new file mode 100644
index 0000000..aa7ef61
--- /dev/null
+++ b/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/RemoteProcessGroupSchemaTest.java
@@ -0,0 +1,79 @@
+/*
+ *
+ *  * 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.
+ *
+ */
+
+package org.apache.nifi.minifi.commons.schema;
+
+import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.assertEquals;
+
+public class RemoteProcessGroupSchemaTest {
+    @Test
+    public void testNoPropertiesSet() {
+        validateIssuesNumMatches(3, new RemoteProcessGroupSchema(new HashMap<>()));
+    }
+
+    @Test
+    public void testInputPortsRootGroup() {
+        Map<String, Object> map = new HashMap<>();
+        map.put(CommonPropertyKeys.INPUT_PORTS_KEY, Arrays.asList(createPortSchema("f94d2469-39f8-4f07-a0d8-acd9396f639e", "testName", ConfigSchema.TOP_LEVEL_NAME).toMap()));
+        map.put(RemoteProcessGroupSchema.URL_KEY, "http://localhost:8080/nifi");
+        map.put(CommonPropertyKeys.ID_KEY, "a58d2fab-7efe-4cb7-8224-12a60bd8003d");
+        validateIssuesNumMatches(0, new RemoteProcessGroupSchema(map));
+    }
+
+    @Test
+    public void testTransportProtocol() {
+        Map<String, Object> map = new HashMap<>();
+        map.put(CommonPropertyKeys.INPUT_PORTS_KEY, Arrays.asList(createPortSchema("f94d2469-39f8-4f07-a0d8-acd9396f639e", "testName", ConfigSchema.TOP_LEVEL_NAME).toMap()));
+        map.put(RemoteProcessGroupSchema.URL_KEY, "http://localhost:8080/nifi");
+        map.put(CommonPropertyKeys.ID_KEY, "a58d2fab-7efe-4cb7-8224-12a60bd8003d");
+        map.put(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY, "not valid");
+        validateIssuesNumMatches(1, new RemoteProcessGroupSchema(map));
+
+        map.put(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY, "RAW");
+        RemoteProcessGroupSchema first =  new RemoteProcessGroupSchema(map);
+        validateIssuesNumMatches(0,first);
+        assertEquals(first.getTransportProtocol(), "RAW");
+
+        map.put(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY, "HTTP");
+        RemoteProcessGroupSchema second =  new RemoteProcessGroupSchema(map);
+        validateIssuesNumMatches(0, second);
+        assertEquals(second.getTransportProtocol(), "HTTP");
+    }
+
+    private PortSchema createPortSchema(String id, String name, String wrapperName) {
+        Map<String, Object> map = new HashMap<>();
+        map.put(CommonPropertyKeys.ID_KEY, id);
+        map.put(CommonPropertyKeys.NAME_KEY, name);
+        return new PortSchema(map, wrapperName);
+    }
+
+    private void validateIssuesNumMatches(int expected, RemoteProcessGroupSchema remoteProcessGroupSchema) {
+        int actual = remoteProcessGroupSchema.getValidationIssues().size();
+        String issues = "[" + System.lineSeparator() + remoteProcessGroupSchema.getValidationIssues().stream().collect(Collectors.joining("," + System.lineSeparator())) + "]";
+        assertEquals("Expected " + expected + " issue(s), got " + actual + ": " + issues, expected, actual);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-docs/src/main/markdown/System_Admin_Guide.md
----------------------------------------------------------------------
diff --git a/minifi-docs/src/main/markdown/System_Admin_Guide.md b/minifi-docs/src/main/markdown/System_Admin_Guide.md
index 361e601..d65f8ed 100644
--- a/minifi-docs/src/main/markdown/System_Admin_Guide.md
+++ b/minifi-docs/src/main/markdown/System_Admin_Guide.md
@@ -235,7 +235,7 @@ stats | The current stats of the RPG. This includes the active threads, sent con
 An example query to get the health, bulletins, input ports and stats of all the RPGS is below.
 
 ```
-minifi.sh flowStatus remoteprocessinggroup:all:health,bulletins,inputports,stats
+minifi.sh flowStatus remoteprocessgroup:all:health,bulletins,inputports,stats
 ```
 
 ### Controller Services
@@ -315,7 +315,7 @@ MiNiFi home: /Users/user/projects/nifi-minifi/minifi-assembly/target/minifi-0.0.
 Bootstrap Config File: /Users/user/projects/nifi-minifi/minifi-assembly/target/minifi-0.0.1-SNAPSHOT-bin/minifi-0.0.1-SNAPSHOT/conf/bootstrap.conf
 
 FlowStatusReport{controllerServiceStatusList=null, processorStatusList=[{name='TailFile', processorHealth={runStatus='Running', hasBulletins=false, validationErrorList=[]}, processorStats=null,
-bulletinList=null}], connectionStatusList=null, remoteProcessingGroupStatusList=null, instanceStatus=null, systemDiagnosticsStatus=null, reportingTaskStatusList=null, errorsGeneratingReport=[]}
+bulletinList=null}], connectionStatusList=null, remoteProcessGroupStatusList=null, instanceStatus=null, systemDiagnosticsStatus=null, reportingTaskStatusList=null, errorsGeneratingReport=[]}
 ```
 
 # Periodic Status Reporters
@@ -345,6 +345,7 @@ parses and upconverts to the current version without issue.
 1. Use ids instead of names for processors, connections.
 2. Allow multiple source relationships for connections.
 3. Support process groups, input ports, output ports
+4. Change Id Key for RPGs from "Remote Processing Groups" to the proper "Remote Process Groups" (not "ing")
 
 ## Flow Controller
 
@@ -496,7 +497,7 @@ Process groups can be nested from the top level.  They can contain other process
 name                                | The name of what this process group will do.
 id                                  | The id of this process group.  This needs to be set to a unique filesystem-friendly value (regex: [A-Za-z0-9_-]+)
 Processors                          | The processors contained in this Process Group. (Defined above)
-Remote Processing Groups            | The remote processing groups contained in this Process Group. (Defined below)
+Remote Process Groups               | The remote process groups contained in this Process Group. (Defined below)
 Connections                         | The connections contained in this Process Group. (Defined below)
 Input Ports                         | The input ports contained in this Process Group. (Defined below)
 Output Ports                        | The output ports contained in this Process Group. (Defined below)
@@ -545,17 +546,18 @@ max work queue data size | This property specifies the maximum amount of data (i
 flowfile expiration      | Indicates how long FlowFiles are allowed to exist in the connection before be expired (automatically removed from the flow).
 queue prioritizer class  | This configuration option specifies the fully qualified java class path of a queue prioritizer to use. If no special prioritizer is desired then it should be left blank. An example value of this property is: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer
 
-## Remote Processing Groups
+## Remote Process Groups
 
-MiNiFi can be used to send data using the Site to Site protocol (via a Remote Processing Group) or a Processor. These properties configure the Remote Processing Groups that use Site-To-Site to send data to a core instance.
+MiNiFi can be used to send data using the Site to Site protocol (via a Remote Process Group) or a Processor. These properties configure the Remote Process Groups that use Site-To-Site to send data to a core instance.
 
-*Property*   | *Description*
------------- | -------------
-name         | The name of what this Remote Processing Group points to. This is not used for any underlying implementation but solely for the users of this configuration and MiNiFi agent.
-comment      | A comment about the Remote Processing Group. This is not used for any underlying implementation but solely for the users of this configuration and MiNiFi agent.
-url          | The URL of the core NiFi instance.
-timeout      | How long MiNiFi should wait before timing out the connection.
-yield period | When communication with this Remote Processing Group fails, it will not be scheduled again for this amount of time.
+*Property*         | *Description*
+-------------------| -------------
+name               | The name of what this Remote Process Group points to. This is not used for any underlying implementation but solely for the users of this configuration and MiNiFi agent.
+comment            | A comment about the Remote Process Group. This is not used for any underlying implementation but solely for the users of this configuration and MiNiFi agent.
+url                | The URL of the core NiFi instance.
+timeout            | How long MiNiFi should wait before timing out the connection.
+yield period       | When communication with this Remote Process Group fails, it will not be scheduled again for this amount of time.
+transport protocol | The transport protocol to use for this Remote Process Group. Can be either "RAW" or "HTTP"
 
 
 #### Input Ports Subsection
@@ -594,6 +596,7 @@ Below are two example config YAML files. The first tails the minifi-app.log, sen
 
 
 ``` yaml
+MiNiFi Config Version: 1
 Flow Controller:
     name: MiNiFi Flow
     comment:

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/main/java/org/apache/nifi/minifi/status/StatusConfigReporter.java
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/main/java/org/apache/nifi/minifi/status/StatusConfigReporter.java b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/main/java/org/apache/nifi/minifi/status/StatusConfigReporter.java
index 8e0348b..75350b2 100644
--- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/main/java/org/apache/nifi/minifi/status/StatusConfigReporter.java
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/main/java/org/apache/nifi/minifi/status/StatusConfigReporter.java
@@ -213,8 +213,8 @@ public final class StatusConfigReporter {
                 RemoteProcessGroupStatus remoteProcessGroupStatus = remoteProcessGroupStatusMap.get(sections[1]);
                 remoteProcessGroupStatusList.add(parseRemoteProcessGroupStatusRequest(remoteProcessGroupStatus, sections[2], flowController));
             } else {
-                logger.warn("Status for Remote Processing Group with key " + sections[1] + " was requested but one does not exist");
-                throw new StatusRequestException("No Remote Processing Group with key " + sections[1] + " to report status on");
+                logger.warn("Status for Remote Process Group with key " + sections[1] + " was requested but one does not exist");
+                throw new StatusRequestException("No Remote Process Group with key " + sections[1] + " to report status on");
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/config.yml
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/config.yml b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/config.yml
index 53462e3..5bcf11d 100644
--- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/config.yml
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/config.yml
@@ -59,4 +59,4 @@ Processors: []
 Process Groups: []
 Funnels: []
 Connections: []
-Remote Processing Groups: []
+Remote Process Groups: []

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/ConfigSchemaFunction.java
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/ConfigSchemaFunction.java b/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/ConfigSchemaFunction.java
index d6aaabf..ed016e1 100644
--- a/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/ConfigSchemaFunction.java
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/ConfigSchemaFunction.java
@@ -23,7 +23,7 @@ import org.apache.nifi.minifi.commons.schema.FunnelSchema;
 import org.apache.nifi.minifi.commons.schema.PortSchema;
 import org.apache.nifi.minifi.commons.schema.ProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.ProcessorSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
 import org.apache.nifi.minifi.commons.schema.common.CollectionUtil;
 import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
 import org.apache.nifi.minifi.commons.schema.common.StringUtil;
@@ -47,23 +47,23 @@ public class ConfigSchemaFunction implements Function<TemplateDTO, ConfigSchema>
     private final ProcessorSchemaFunction processorSchemaFunction;
     private final ConnectionSchemaFunction connectionSchemaFunction;
     private final FunnelSchemaFunction funnelSchemaFunction;
-    private final RemoteProcessingGroupSchemaFunction remoteProcessingGroupSchemaFunction;
+    private final RemoteProcessGroupSchemaFunction remoteProcessGroupSchemaFunction;
     private final PortSchemaFunction inputPortSchemaFunction;
     private final PortSchemaFunction outputPortSchemaFunction;
 
     public ConfigSchemaFunction() {
-        this(new FlowControllerSchemaFunction(), new ProcessorSchemaFunction(), new ConnectionSchemaFunction(), new FunnelSchemaFunction(), new RemoteProcessingGroupSchemaFunction(
+        this(new FlowControllerSchemaFunction(), new ProcessorSchemaFunction(), new ConnectionSchemaFunction(), new FunnelSchemaFunction(), new RemoteProcessGroupSchemaFunction(
                 new RemoteInputPortSchemaFunction()), new PortSchemaFunction(INPUT_PORTS_KEY), new PortSchemaFunction(OUTPUT_PORTS_KEY));
     }
 
     public ConfigSchemaFunction(FlowControllerSchemaFunction flowControllerSchemaFunction, ProcessorSchemaFunction processorSchemaFunction, ConnectionSchemaFunction connectionSchemaFunction,
-                                FunnelSchemaFunction funnelSchemaFunction, RemoteProcessingGroupSchemaFunction remoteProcessingGroupSchemaFunction, PortSchemaFunction inputPortSchemaFunction,
+                                FunnelSchemaFunction funnelSchemaFunction, RemoteProcessGroupSchemaFunction remoteProcessGroupSchemaFunction, PortSchemaFunction inputPortSchemaFunction,
                                 PortSchemaFunction outputPortSchemaFunction) {
         this.flowControllerSchemaFunction = flowControllerSchemaFunction;
         this.processorSchemaFunction = processorSchemaFunction;
         this.connectionSchemaFunction = connectionSchemaFunction;
         this.funnelSchemaFunction = funnelSchemaFunction;
-        this.remoteProcessingGroupSchemaFunction = remoteProcessingGroupSchemaFunction;
+        this.remoteProcessGroupSchemaFunction = remoteProcessGroupSchemaFunction;
         this.inputPortSchemaFunction = inputPortSchemaFunction;
         this.outputPortSchemaFunction = outputPortSchemaFunction;
     }
@@ -112,10 +112,10 @@ public class ConfigSchemaFunction implements Function<TemplateDTO, ConfigSchema>
                 .map(FunnelSchema::toMap)
                 .collect(Collectors.toList()));
 
-        map.put(CommonPropertyKeys.REMOTE_PROCESSING_GROUPS_KEY, nullToEmpty(snippet.getRemoteProcessGroups()).stream()
-                .map(remoteProcessingGroupSchemaFunction)
-                .sorted(Comparator.comparing(RemoteProcessingGroupSchema::getName))
-                .map(RemoteProcessingGroupSchema::toMap)
+        map.put(CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY, nullToEmpty(snippet.getRemoteProcessGroups()).stream()
+                .map(remoteProcessGroupSchemaFunction)
+                .sorted(Comparator.comparing(RemoteProcessGroupSchema::getName))
+                .map(RemoteProcessGroupSchema::toMap)
                 .collect(Collectors.toList()));
 
         map.put(INPUT_PORTS_KEY, nullToEmpty(snippet.getInputPorts()).stream()

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaFunction.java
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaFunction.java b/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaFunction.java
new file mode 100644
index 0000000..1dcc511
--- /dev/null
+++ b/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessGroupSchemaFunction.java
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+
+package org.apache.nifi.minifi.toolkit.configuration.dto;
+
+import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
+import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
+import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
+import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO;
+import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
+import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+public class RemoteProcessGroupSchemaFunction implements Function<RemoteProcessGroupDTO, RemoteProcessGroupSchema> {
+    private final RemoteInputPortSchemaFunction remoteInputPortSchemaFunction;
+
+    public RemoteProcessGroupSchemaFunction(RemoteInputPortSchemaFunction remoteInputPortSchemaFunction) {
+        this.remoteInputPortSchemaFunction = remoteInputPortSchemaFunction;
+    }
+
+    @Override
+    public RemoteProcessGroupSchema apply(RemoteProcessGroupDTO remoteProcessGroupDTO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put(CommonPropertyKeys.ID_KEY, remoteProcessGroupDTO.getId());
+        map.put(CommonPropertyKeys.NAME_KEY, remoteProcessGroupDTO.getName());
+        map.put(RemoteProcessGroupSchema.URL_KEY, remoteProcessGroupDTO.getTargetUri());
+
+        RemoteProcessGroupContentsDTO contents = remoteProcessGroupDTO.getContents();
+        if (contents != null) {
+            Set<RemoteProcessGroupPortDTO> inputPorts = contents.getInputPorts();
+            if (inputPorts != null) {
+                map.put(CommonPropertyKeys.INPUT_PORTS_KEY, inputPorts.stream()
+                        .map(remoteInputPortSchemaFunction)
+                        .map(RemoteInputPortSchema::toMap)
+                        .collect(Collectors.toList()));
+            }
+        }
+
+        map.put(CommonPropertyKeys.COMMENT_KEY, remoteProcessGroupDTO.getComments());
+        map.put(RemoteProcessGroupSchema.TIMEOUT_KEY, remoteProcessGroupDTO.getCommunicationsTimeout());
+        map.put(CommonPropertyKeys.YIELD_PERIOD_KEY, remoteProcessGroupDTO.getYieldDuration());
+        map.put(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY, remoteProcessGroupDTO.getTransportProtocol());
+        return new RemoteProcessGroupSchema(map);
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/98877d67/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaFunction.java
----------------------------------------------------------------------
diff --git a/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaFunction.java b/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaFunction.java
deleted file mode 100644
index 95b9ff9..0000000
--- a/minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/dto/RemoteProcessingGroupSchemaFunction.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.nifi.minifi.toolkit.configuration.dto;
-
-import org.apache.nifi.minifi.commons.schema.RemoteInputPortSchema;
-import org.apache.nifi.minifi.commons.schema.RemoteProcessingGroupSchema;
-import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
-import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO;
-import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
-import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-public class RemoteProcessingGroupSchemaFunction implements Function<RemoteProcessGroupDTO, RemoteProcessingGroupSchema> {
-    private final RemoteInputPortSchemaFunction remoteInputPortSchemaFunction;
-
-    public RemoteProcessingGroupSchemaFunction(RemoteInputPortSchemaFunction remoteInputPortSchemaFunction) {
-        this.remoteInputPortSchemaFunction = remoteInputPortSchemaFunction;
-    }
-
-    @Override
-    public RemoteProcessingGroupSchema apply(RemoteProcessGroupDTO remoteProcessGroupDTO) {
-        Map<String, Object> map = new HashMap<>();
-        map.put(CommonPropertyKeys.ID_KEY, remoteProcessGroupDTO.getId());
-        map.put(CommonPropertyKeys.NAME_KEY, remoteProcessGroupDTO.getName());
-        map.put(RemoteProcessingGroupSchema.URL_KEY, remoteProcessGroupDTO.getTargetUri());
-
-        RemoteProcessGroupContentsDTO contents = remoteProcessGroupDTO.getContents();
-        if (contents != null) {
-            Set<RemoteProcessGroupPortDTO> inputPorts = contents.getInputPorts();
-            if (inputPorts != null) {
-                map.put(CommonPropertyKeys.INPUT_PORTS_KEY, inputPorts.stream()
-                        .map(remoteInputPortSchemaFunction)
-                        .map(RemoteInputPortSchema::toMap)
-                        .collect(Collectors.toList()));
-            }
-        }
-
-        map.put(CommonPropertyKeys.COMMENT_KEY, remoteProcessGroupDTO.getComments());
-        map.put(RemoteProcessingGroupSchema.TIMEOUT_KEY, remoteProcessGroupDTO.getCommunicationsTimeout());
-        map.put(CommonPropertyKeys.YIELD_PERIOD_KEY, remoteProcessGroupDTO.getYieldDuration());
-        return new RemoteProcessingGroupSchema(map);
-    }
-}