diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/FlowFileConcurrency.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/FlowFileConcurrency.java
deleted file mode 100644
index fdd3f86..0000000
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/FlowFileConcurrency.java
+++ /dev/null
@@ -1,23 +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.registry.flow;
-
-public enum FlowFileConcurrency {
-    SINGLE_FLOWFILE_PER_NODE,
-    UNBOUNDED;
-}
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/FlowFileOutboundPolicy.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/FlowFileOutboundPolicy.java
deleted file mode 100644
index 0b95936..0000000
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/FlowFileOutboundPolicy.java
+++ /dev/null
@@ -1,23 +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.registry.flow;
-
-public enum FlowFileOutboundPolicy {
-    STREAM_WHEN_AVAILABLE,
-    BATCH_OUTPUT;
-}
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
index 630cf33..93e727b 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
@@ -42,8 +42,8 @@
     private Map<String, String> variables = new HashMap<>();
 
     private String parameterContextName;
-    private FlowFileConcurrency flowfileConcurrency;
-    private FlowFileOutboundPolicy flowfileOutboundPolicy;
+    private String flowfileConcurrency;
+    private String flowfileOutboundPolicy;
 
     @ApiModelProperty("The child Process Groups")
     public Set<VersionedProcessGroup> getProcessGroups() {
@@ -159,20 +159,20 @@
     }
 
     @ApiModelProperty(value = "The configured FlowFile Concurrency for the Process Group")
-    public FlowFileConcurrency getFlowFileConcurrency() {
+    public String getFlowFileConcurrency() {
         return flowfileConcurrency;
     }
 
-    public void setFlowFileConcurrency(final FlowFileConcurrency flowfileConcurrency) {
+    public void setFlowFileConcurrency(final String flowfileConcurrency) {
         this.flowfileConcurrency = flowfileConcurrency;
     }
 
     @ApiModelProperty(value = "The FlowFile Outbound Policy for the Process Group")
-    public FlowFileOutboundPolicy getFlowFileOutboundPolicy() {
+    public String getFlowFileOutboundPolicy() {
         return flowfileOutboundPolicy;
     }
 
-    public void setFlowFileOutboundPolicy(final FlowFileOutboundPolicy outboundPolicy) {
+    public void setFlowFileOutboundPolicy(final String outboundPolicy) {
         this.flowfileOutboundPolicy = outboundPolicy;
     }
 }
diff --git a/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java b/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
index ce7373b..6a0baad 100644
--- a/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
+++ b/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
@@ -17,8 +17,6 @@
 
 package org.apache.nifi.registry.flow.diff;
 
-import org.apache.nifi.registry.flow.FlowFileConcurrency;
-import org.apache.nifi.registry.flow.FlowFileOutboundPolicy;
 import org.apache.nifi.registry.flow.VersionedComponent;
 import org.apache.nifi.registry.flow.VersionedConnection;
 import org.apache.nifi.registry.flow.VersionedControllerService;
@@ -46,6 +44,8 @@
     private static final String DEFAULT_LOAD_BALANCE_STRATEGY = "DO_NOT_LOAD_BALANCE";
     private static final String DEFAULT_PARTITIONING_ATTRIBUTE = "";
     private static final String DEFAULT_LOAD_BALANCE_COMPRESSION = "DO_NOT_COMPRESS";
+    private static final String DEFAULT_FLOW_FILE_CONCURRENCY = "UNBOUNDED";
+    private static final String DEFAULT_OUTBOUND_FLOW_FILE_POLICY = "STREAM_WHEN_AVAILABLE";
 
     private static final Pattern PARAMETER_REFERENCE_PATTERN = Pattern.compile("#\\{[A-Za-z0-9\\-_. ]+}");
 
@@ -334,9 +334,9 @@
 
         addIfDifferent(differences, DifferenceType.VERSIONED_FLOW_COORDINATES_CHANGED, groupA, groupB, VersionedProcessGroup::getVersionedFlowCoordinates);
         addIfDifferent(differences, DifferenceType.FLOWFILE_CONCURRENCY_CHANGED, groupA, groupB, VersionedProcessGroup::getFlowFileConcurrency,
-            true, FlowFileConcurrency.UNBOUNDED);
+            true, DEFAULT_FLOW_FILE_CONCURRENCY);
         addIfDifferent(differences, DifferenceType.FLOWFILE_OUTBOUND_POLICY_CHANGED, groupA, groupB, VersionedProcessGroup::getFlowFileOutboundPolicy,
-            true, FlowFileOutboundPolicy.STREAM_WHEN_AVAILABLE);
+            true, DEFAULT_OUTBOUND_FLOW_FILE_POLICY);
 
         final VersionedFlowCoordinates groupACoordinates = groupA.getVersionedFlowCoordinates();
         final VersionedFlowCoordinates groupBCoordinates = groupB.getVersionedFlowCoordinates();
