You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2025/05/21 16:47:24 UTC

(plc4x-extras) branch develop updated: feat(nifi): NiFi 1 and 2 compatibility (#336)

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

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git


The following commit(s) were added to refs/heads/develop by this push:
     new ef1b81b  feat(nifi): NiFi 1 and 2 compatibility (#336)
ef1b81b is described below

commit ef1b81bc30c8f63ffb6629a2b047530b48bfa83d
Author: Unai LerĂ­a Fortea <un...@zylk.net>
AuthorDate: Wed May 21 18:47:19 2025 +0200

    feat(nifi): NiFi 1 and 2 compatibility (#336)
    
    Added a second repo to allow building a NiFi 1 and NiFi 2 compatible version of the integration module at the same time.
---
 plc4j/integrations/apache-nifi/.gitignore          |   1 +
 .../{ => nifi-1}/nifi-plc4x-nar/bin/.gitignore     |   0
 .../{ => nifi-1}/nifi-plc4x-nar/pom.xml            |  36 ++++--
 .../{ => nifi-1}/nifi-plc4x-processors/pom.xml     |  43 +++----
 .../org/apache/plc4x/nifi/BasePlc4xProcessor.java  |   0
 .../plc4x/nifi/Plc4xListenRecordProcessor.java     |   0
 .../org/apache/plc4x/nifi/Plc4xSinkProcessor.java  |   0
 .../plc4x/nifi/Plc4xSinkRecordProcessor.java       |   0
 .../apache/plc4x/nifi/Plc4xSourceProcessor.java    |   0
 .../plc4x/nifi/Plc4xSourceRecordProcessor.java     |   0
 .../nifi/address/AddressesAccessStrategy.java      |   0
 .../plc4x/nifi/address/AddressesAccessUtils.java   |   0
 .../plc4x/nifi/address/BaseAccessStrategy.java     |   0
 .../address/DynamicPropertyAccessStrategy.java     |   0
 .../nifi/address/FilePropertyAccessStrategy.java   |   0
 .../nifi/address/TextPropertyAccessStrategy.java   |   0
 .../nifi/record/Plc4xReadResponseRecordSet.java    |   0
 .../org/apache/plc4x/nifi/record/Plc4xWriter.java  |   0
 .../plc4x/nifi/record/RecordPlc4xWriter.java       |   0
 .../org/apache/plc4x/nifi/record/SchemaCache.java  |   0
 .../nifi/subscription/Plc4xListenerDispatcher.java |   0
 .../nifi/subscription/Plc4xSubscriptionType.java   |   0
 .../org/apache/plc4x/nifi/util/Plc4xCommon.java    |   0
 .../services/org.apache.nifi.processor.Processor   |   0
 .../plc4x/nifi/Plc4xListenRecordProcessorTest.java |   0
 .../java/org/apache/plc4x/nifi/Plc4xNifiTest.java  |   0
 .../apache/plc4x/nifi/Plc4xSinkProcessorTest.java  |   0
 .../plc4x/nifi/Plc4xSinkRecordProcessorTest.java   |   0
 .../plc4x/nifi/Plc4xSourceProcessorTest.java       |   6 +-
 .../plc4x/nifi/Plc4xSourceRecordProcessorTest.java |   0
 .../plc4x/nifi/address/AccessStrategyTest.java     |   0
 .../apache/plc4x/nifi/record/SchemaCacheTest.java  |   0
 .../apache/plc4x/nifi/util/Plc4xCommonTest.java    |   0
 .../src/test/resources/logback-test.xml            |   0
 plc4j/integrations/apache-nifi/nifi-1/pom.xml      | 128 +++++++++++++++++++
 .../nifi-2-plc4x-nar}/bin/.gitignore               |   0
 .../nifi-2-plc4x-nar}/pom.xml                      |  37 ++++--
 .../nifi-2-plc4x-processors}/pom.xml               |  45 ++++---
 .../org/apache/plc4x/nifi/BasePlc4xProcessor.java  |   4 +-
 .../plc4x/nifi/Plc4xListenRecordProcessor.java     |   5 +-
 .../org/apache/plc4x/nifi/Plc4xSinkProcessor.java  |   0
 .../plc4x/nifi/Plc4xSinkRecordProcessor.java       |   0
 .../apache/plc4x/nifi/Plc4xSourceProcessor.java    |   0
 .../plc4x/nifi/Plc4xSourceRecordProcessor.java     |   0
 .../nifi/address/AddressesAccessStrategy.java      |   0
 .../plc4x/nifi/address/AddressesAccessUtils.java   |   0
 .../plc4x/nifi/address/BaseAccessStrategy.java     |   2 +-
 .../address/DynamicPropertyAccessStrategy.java     |   0
 .../nifi/address/FilePropertyAccessStrategy.java   |   0
 .../nifi/address/TextPropertyAccessStrategy.java   |   0
 .../nifi/record/Plc4xReadResponseRecordSet.java    |   0
 .../org/apache/plc4x/nifi/record/Plc4xWriter.java  |   0
 .../plc4x/nifi/record/RecordPlc4xWriter.java       |   0
 .../org/apache/plc4x/nifi/record/SchemaCache.java  |   0
 .../nifi/subscription/Plc4xListenerDispatcher.java |   0
 .../nifi/subscription/Plc4xSubscriptionType.java   |   0
 .../org/apache/plc4x/nifi/util/Plc4xCommon.java    |   0
 .../services/org.apache.nifi.processor.Processor   |   0
 .../plc4x/nifi/Plc4xListenRecordProcessorTest.java |   0
 .../java/org/apache/plc4x/nifi/Plc4xNifiTest.java  |   0
 .../apache/plc4x/nifi/Plc4xSinkProcessorTest.java  |   0
 .../plc4x/nifi/Plc4xSinkRecordProcessorTest.java   |   3 +
 .../plc4x/nifi/Plc4xSourceProcessorTest.java       |  19 ++-
 .../plc4x/nifi/Plc4xSourceRecordProcessorTest.java |   3 +
 .../plc4x/nifi/address/AccessStrategyTest.java     |  24 ++--
 .../apache/plc4x/nifi/record/SchemaCacheTest.java  |   0
 .../apache/plc4x/nifi/util/Plc4xCommonTest.java    |   3 +-
 .../src/test/resources/logback-test.xml            |   0
 .../integrations/apache-nifi/{ => nifi-2}/pom.xml  | 135 ++++++++++-----------
 plc4j/integrations/apache-nifi/pom.xml             | 133 +++-----------------
 70 files changed, 347 insertions(+), 280 deletions(-)

diff --git a/plc4j/integrations/apache-nifi/.gitignore b/plc4j/integrations/apache-nifi/.gitignore
new file mode 100644
index 0000000..8652d88
--- /dev/null
+++ b/plc4j/integrations/apache-nifi/.gitignore
@@ -0,0 +1 @@
+**/target*/*
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/bin/.gitignore
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/bin/.gitignore
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/pom.xml
similarity index 78%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/pom.xml
index baf43bd..7d2c50a 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/pom.xml
@@ -22,37 +22,36 @@
 
 	<parent>
 		<groupId>org.apache.plc4x</groupId>
-		<artifactId>plc4j-apache-nifi</artifactId>
+		<artifactId>plc4j-apache-nifi-1</artifactId>
 		<version>0.13.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>plc4j-nifi-plc4x-nar</artifactId>
 	<packaging>nar</packaging>
 
-	<name>PLC4J: Integrations: Apache Nifi: NAR</name>
+	<name>PLC4J: Integrations: Apache Nifi 1: NAR</name>
 
-  <properties>
-    <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
+	<properties>
 		<maven.javadoc.skip>true</maven.javadoc.skip>
 		<source.skip>true</source.skip>
 	</properties>
 
 	<dependencies>
-		<dependency>
-			<groupId>org.apache.plc4x</groupId>
-			<artifactId>plc4j-nifi-plc4x-processors</artifactId>
-			<version>0.13.0-SNAPSHOT</version>
-		</dependency>
 
 		<dependency>
 			<groupId>org.apache.nifi</groupId>
 			<artifactId>nifi-standard-services-api-nar</artifactId>
 			<version>${nifi.version}</version>
 			<type>nar</type>
-			<scope>provided</scope>
 		</dependency>
 
 		<!-- PLC4X -->
+		<dependency>
+			<groupId>org.apache.plc4x</groupId>
+			<artifactId>plc4j-nifi-plc4x-processors</artifactId>
+			<version>0.13.0-SNAPSHOT</version>
+		</dependency>
+
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-api</artifactId>
@@ -68,4 +67,21 @@
     	</dependency>
 	</dependencies>
 
+
+	<build>
+		<plugins>
+			<!-- Add the ability to create nar packages -->
+			<plugin>
+				<groupId>org.apache.nifi</groupId>
+				<artifactId>nifi-nar-maven-plugin</artifactId>
+			</plugin>
+			<!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>buildnumber-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+
 </project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/pom.xml
similarity index 93%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/pom.xml
index 1b35644..6b4806c 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/pom.xml
@@ -23,13 +23,13 @@
 
     <parent>
         <groupId>org.apache.plc4x</groupId>
-        <artifactId>plc4j-apache-nifi</artifactId>
+        <artifactId>plc4j-apache-nifi-1</artifactId>
         <version>0.13.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>plc4j-nifi-plc4x-processors</artifactId>
 
-    <name>PLC4J: Integrations: Apache Nifi: Processors</name>
+    <name>PLC4J: Integrations: Apache Nifi 1: Processors</name>
 
     <properties>
         <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
@@ -51,26 +51,40 @@
             <artifactId>plc4j-spi</artifactId>
             <version>0.13.0-SNAPSHOT</version>
         </dependency>
+
+        <!-- NiFi -->
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-record</artifactId>
+            <artifactId>nifi-utils</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-record-serialization-service-api</artifactId>
+            <artifactId>nifi-record</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-utils</artifactId>
+            <artifactId>nifi-record-serialization-service-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-json-utils</artifactId>
         </dependency>
+
+        <!-- Read tags from file -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+
+        <!-- Testing -->
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-record-serialization-services</artifactId>
@@ -82,14 +96,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
+
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-schema-registry-service-api</artifactId>
@@ -105,10 +112,6 @@
             <artifactId>nifi-mock-record-utils</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
 
         <!-- This one is for test purpouses only, drivers are included in the nar -->
         <dependency>
@@ -176,11 +179,5 @@
 			<version>5.2.0</version>
 			<scope>test</scope>
 		</dependency>
-
-        <dependency>
-            <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-standard-nar</artifactId>
-            <type>nar</type>
-        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
similarity index 94%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
index 6505503..0a3f672 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
@@ -18,6 +18,9 @@
  */
 package org.apache.plc4x.nifi;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.apache.plc4x.nifi.address.AddressesAccessUtils;
@@ -37,12 +40,13 @@ public class Plc4xSourceProcessorTest extends Plc4xNifiTest {
     private static final int NUMBER_OF_CALLS = 5;
 
     @BeforeEach
-    public void init() {
+    public void init() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
         testRunner = TestRunners.newTestRunner(Plc4xSourceProcessor.class);
         testRunner.setIncomingConnection(false);
         testRunner.setValidateExpressionUsage(true);
 
         testRunner.setVariable("url", "simulated://127.0.0.1");
+        
         testRunner.setProperty(Plc4xSourceProcessor.PLC_CONNECTION_STRING, "${url}");
         testRunner.setProperty(Plc4xSourceProcessor.PLC_FUTURE_TIMEOUT_MILISECONDS, "1000");
 
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml b/plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/resources/logback-test.xml
similarity index 100%
copy from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml
copy to plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-processors/src/test/resources/logback-test.xml
diff --git a/plc4j/integrations/apache-nifi/nifi-1/pom.xml b/plc4j/integrations/apache-nifi/nifi-1/pom.xml
new file mode 100644
index 0000000..e216b8a
--- /dev/null
+++ b/plc4j/integrations/apache-nifi/nifi-1/pom.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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
+
+      https://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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.plc4x</groupId>
+        <artifactId>plc4j-apache-nifi</artifactId>
+        <version>0.13.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>plc4j-apache-nifi-1</artifactId>
+    <packaging>pom</packaging>
+
+    <name>PLC4J: Integrations: Apache Nifi 1</name>
+    <description>Integration module for integrating PLC4X into Apache Nifi 1.</description>
+
+
+    <properties>
+        <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
+        
+        <nifi.version>1.28.1</nifi.version>
+        <nifi.nar-plugin.version>1.5.1</nifi.nar-plugin.version>
+    </properties>
+
+    <modules>
+        <module>nifi-plc4x-processors</module>
+        <module>nifi-plc4x-nar</module>
+    </modules>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <!-- Add the ability to create nar packages -->
+                <plugin>
+                    <groupId>org.apache.nifi</groupId>
+                    <artifactId>nifi-nar-maven-plugin</artifactId>
+                    <version>${nifi.nar-plugin.version}</version>
+                    <extensions>true</extensions>
+                </plugin>
+                <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>buildnumber-maven-plugin</artifactId>
+                    <inherited>true</inherited>
+                    <executions>
+                        <execution>
+                            <phase>validate</phase>
+                            <goals>
+                                <goal>create</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <doCheck>false</doCheck>
+                        <doUpdate>false</doUpdate>
+                        <shortRevisionLength>7</shortRevisionLength>
+                        <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
+                        <revisionOnScmFailure />
+                        <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
+                        <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.junit</groupId>
+                <artifactId>junit-bom</artifactId>
+                <version>5.12.1</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi</artifactId>
+                <version>${nifi.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-utils</artifactId>
+                <version>${nifi.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-json-utils</artifactId>
+                <version>${nifi.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-record-serialization-services</artifactId>
+                <version>${nifi.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-nar-bundles</artifactId>
+                <version>${nifi.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+</project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/bin/.gitignore
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-nar/bin/.gitignore
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/bin/.gitignore
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/pom.xml
similarity index 74%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/pom.xml
index baf43bd..b97f1b7 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/pom.xml
@@ -22,37 +22,36 @@
 
 	<parent>
 		<groupId>org.apache.plc4x</groupId>
-		<artifactId>plc4j-apache-nifi</artifactId>
+		<artifactId>plc4j-apache-nifi-2</artifactId>
 		<version>0.13.0-SNAPSHOT</version>
 	</parent>
 
-	<artifactId>plc4j-nifi-plc4x-nar</artifactId>
+	<artifactId>plc4j-nifi-2-plc4x-nar</artifactId>
 	<packaging>nar</packaging>
 
-	<name>PLC4J: Integrations: Apache Nifi: NAR</name>
+	<name>PLC4J: Integrations: Apache Nifi 2: NAR</name>
 
-  <properties>
-    <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
+	<properties>
 		<maven.javadoc.skip>true</maven.javadoc.skip>
 		<source.skip>true</source.skip>
 	</properties>
 
 	<dependencies>
-		<dependency>
-			<groupId>org.apache.plc4x</groupId>
-			<artifactId>plc4j-nifi-plc4x-processors</artifactId>
-			<version>0.13.0-SNAPSHOT</version>
-		</dependency>
 
 		<dependency>
 			<groupId>org.apache.nifi</groupId>
 			<artifactId>nifi-standard-services-api-nar</artifactId>
 			<version>${nifi.version}</version>
 			<type>nar</type>
-			<scope>provided</scope>
 		</dependency>
 
 		<!-- PLC4X -->
+		<dependency>
+			<groupId>org.apache.plc4x</groupId>
+			<artifactId>plc4j-nifi-2-plc4x-processors</artifactId>
+			<version>0.13.0-SNAPSHOT</version>
+		</dependency>
+
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-api</artifactId>
@@ -68,4 +67,20 @@
     	</dependency>
 	</dependencies>
 
+
+	<build>
+		<plugins>
+			<!-- Add the ability to create nar packages -->
+			<plugin>
+				<groupId>org.apache.nifi</groupId>
+				<artifactId>nifi-nar-maven-plugin</artifactId>
+			</plugin>
+			<!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>buildnumber-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
 </project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/pom.xml
similarity index 92%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/pom.xml
index 1b35644..b008923 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/pom.xml
@@ -23,13 +23,13 @@
 
     <parent>
         <groupId>org.apache.plc4x</groupId>
-        <artifactId>plc4j-apache-nifi</artifactId>
+        <artifactId>plc4j-apache-nifi-2</artifactId>
         <version>0.13.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>plc4j-nifi-plc4x-processors</artifactId>
+    <artifactId>plc4j-nifi-2-plc4x-processors</artifactId>
 
-    <name>PLC4J: Integrations: Apache Nifi: Processors</name>
+    <name>PLC4J: Integrations: Apache Nifi 2: Processors</name>
 
     <properties>
         <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
@@ -51,9 +51,15 @@
             <artifactId>plc4j-spi</artifactId>
             <version>0.13.0-SNAPSHOT</version>
         </dependency>
+
+        <!-- NiFi -->
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-api</artifactId>
+        </dependency>
+            <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-utils</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
@@ -65,12 +71,20 @@
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-utils</artifactId>
+            <artifactId>nifi-json-utils</artifactId>
         </dependency>
+
+        <!-- Read tags from file -->
         <dependency>
-            <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-json-utils</artifactId>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
         </dependency>
+
+        <!-- Testing -->
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-record-serialization-services</artifactId>
@@ -82,14 +96,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
+       
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-schema-registry-service-api</artifactId>
@@ -105,10 +112,6 @@
             <artifactId>nifi-mock-record-utils</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
 
         <!-- This one is for test purpouses only, drivers are included in the nar -->
         <dependency>
@@ -176,11 +179,5 @@
 			<version>5.2.0</version>
 			<scope>test</scope>
 		</dependency>
-
-        <dependency>
-            <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-standard-nar</artifactId>
-            <type>nar</type>
-        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
index 05d7cbb..7d3dac3 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
@@ -101,7 +101,7 @@ public abstract class BasePlc4xProcessor extends AbstractProcessor {
 		.description("Maximum number of entries in the cache. Can improve performance when addresses change dynamically.")
 		.defaultValue("1")
 		.required(true)
-        .expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
+        .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
 		.addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
 		.build();
 
@@ -120,7 +120,7 @@ public abstract class BasePlc4xProcessor extends AbstractProcessor {
         .displayName("Timestamp Field Name")
         .description("Name of the field that will display the timestamp of the operation.")
         .required(true)
-        .expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
+        .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
         .addValidator(new Plc4xTimestampFieldValidator())
         .defaultValue("ts")
         .build();
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
index 8b30bce..5da5e81 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessor.java
@@ -135,7 +135,10 @@ public class Plc4xListenRecordProcessor extends BasePlc4xProcessor {
     public void onScheduled(final ProcessContext context) {
 		super.onScheduled(context);
 		subscriptionType = Plc4xSubscriptionType.valueOf(context.getProperty(PLC_SUBSCRIPTION_TYPE).getValue());
-        cyclingPollingInterval = context.getProperty(PLC_SUBSCRIPTION_CYCLIC_POLLING_INTERVAL).asLong();
+		if (subscriptionType.equals(Plc4xSubscriptionType.CYCLIC)){
+			// Only access the property if the dependency is fullfilled
+			cyclingPollingInterval = context.getProperty(PLC_SUBSCRIPTION_CYCLIC_POLLING_INTERVAL).asLong();
+		}
 		createDispatcher(context, events);
 	}
 
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessor.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/AddressesAccessUtils.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
index 8bb2d96..5f3ca7f 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/BaseAccessStrategy.java
@@ -55,7 +55,7 @@ public abstract class BaseAccessStrategy implements AddressesAccessStrategy{
     public Map<String, String> extractAddresses(final ProcessContext context, final FlowFile flowFile) {
         if (!isInitializated) {
             getPropertyDescriptors().forEach(prop -> {
-                if (context.isExpressionLanguagePresent(prop)){
+                if (context.getProperty(prop).isExpressionLanguagePresent()){
                     isDynamic = true;
                 }
             });
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/DynamicPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/FilePropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/address/TextPropertyAccessStrategy.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/RecordPlc4xWriter.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/SchemaCache.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xListenerDispatcher.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/subscription/Plc4xSubscriptionType.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xListenRecordProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xNifiTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkProcessorTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
similarity index 94%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
index 4d2a91c..d716685 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSinkRecordProcessorTest.java
@@ -93,6 +93,9 @@ public class Plc4xSinkRecordProcessorTest extends Plc4xNifiTest {
 		testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
         testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, getDumyAddressesFile().getAbsolutePath());
 
+		// This is needed as we access the file name property to check if it has EL to mark it for caching
+		// And that triggers a failure even if the property is not used then. EL is evaluated later.
+		testRunner.setValidateExpressionUsage(false);
         testProcessor();
     }
 }
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
similarity index 85%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
index 6505503..148e705 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceProcessorTest.java
@@ -18,15 +18,14 @@
  */
 package org.apache.plc4x.nifi;
 
+import java.lang.reflect.InvocationTargetException;
+
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.apache.plc4x.nifi.address.AddressesAccessUtils;
-import org.apache.plc4x.nifi.address.FilePropertyAccessStrategy;
 import org.apache.plc4x.nifi.util.Plc4xCommonTest;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
-import org.mockito.Mockito;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -37,12 +36,13 @@ public class Plc4xSourceProcessorTest extends Plc4xNifiTest {
     private static final int NUMBER_OF_CALLS = 5;
 
     @BeforeEach
-    public void init() {
+    public void init() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
         testRunner = TestRunners.newTestRunner(Plc4xSourceProcessor.class);
         testRunner.setIncomingConnection(false);
         testRunner.setValidateExpressionUsage(true);
 
-        testRunner.setVariable("url", "simulated://127.0.0.1");
+        testRunner.setEnvironmentVariableValue("url", "simulated://127.0.0.1");
+        
         testRunner.setProperty(Plc4xSourceProcessor.PLC_CONNECTION_STRING, "${url}");
         testRunner.setProperty(Plc4xSourceProcessor.PLC_FUTURE_TIMEOUT_MILISECONDS, "1000");
 
@@ -80,11 +80,10 @@ public class Plc4xSourceProcessorTest extends Plc4xNifiTest {
         testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
         testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, getDumyAddressesFile().getAbsolutePath());
 
-        try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
-            staticMock.when(() -> FilePropertyAccessStrategy.extractAddressesFromFile("file"))
-                .thenReturn(Plc4xCommonTest.getAddressMap());
+        // This is needed as we access the file name property to check if it has EL to mark it for caching
+		// And that triggers a failure even if the property is not used then. EL is evaluated later.
+		testRunner.setValidateExpressionUsage(false);
 
-            testProcessor();
-        }
+        testProcessor();
     }
 }
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
similarity index 94%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
index 0f474bd..784dbfc 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/Plc4xSourceRecordProcessorTest.java
@@ -87,6 +87,9 @@ public class Plc4xSourceRecordProcessorTest extends Plc4xNifiTest {
         testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
         testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, getDumyAddressesFile().getAbsolutePath());
 
+        // This is needed as we access the file name property to check if it has EL to mark it for caching
+		// And that triggers a failure even if the property is not used then. EL is evaluated later.
+		testRunner.setValidateExpressionUsage(false);
         testProcessor();
     }
 }
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
similarity index 90%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
index 4f1d032..3941e04 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/address/AccessStrategyTest.java
@@ -17,12 +17,14 @@
 package org.apache.plc4x.nifi.address;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.io.IOException;
 import java.util.Map;
 
 import org.apache.nifi.flowfile.FlowFile;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
+import org.apache.plc4x.nifi.Plc4xNifiTest;
 import org.apache.plc4x.nifi.Plc4xSourceProcessor;
 import org.apache.plc4x.nifi.util.Plc4xCommonTest;
 import org.junit.jupiter.api.Test;
@@ -33,7 +35,7 @@ import org.mockito.Mockito;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-public class AccessStrategyTest {
+public class AccessStrategyTest extends Plc4xNifiTest {
 
     @Mock
     FilePropertyAccessStrategy testFileObject = new FilePropertyAccessStrategy();
@@ -91,6 +93,8 @@ public class AccessStrategyTest {
         assert testObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_TEXT);
         assert testObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY);
         
+
+        testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_TEXT);
         testRunner.setProperty(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY, new ObjectMapper().writeValueAsString(Plc4xCommonTest.getAddressMap()).toString());
 		
         FlowFile flowFile = testRunner.enqueue("");
@@ -113,6 +117,9 @@ public class AccessStrategyTest {
         assert testObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_TEXT);
         assert testObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY);
         
+
+        testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_TEXT);
+
         Plc4xCommonTest.getAddressMap().forEach((k,v) -> testRunner.setProperty(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY.getName(), "no an correct address"));
 
         testRunner.assertNotValid();
@@ -134,6 +141,8 @@ public class AccessStrategyTest {
         assert testObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_TEXT);
         assert testObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY);
         
+        testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_TEXT);
+
         Plc4xCommonTest.getAddressMap().forEach((k,v) -> testRunner.setProperty(AddressesAccessUtils.ADDRESS_TEXT_PROPERTY.getName(), "${attribute}"));
 
         testRunner.assertValid();
@@ -149,6 +158,7 @@ public class AccessStrategyTest {
         assert testFileObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_FILE_PROPERTY);
 
 
+        testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
         testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, "file");
 
         try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
@@ -173,6 +183,8 @@ public class AccessStrategyTest {
         assert testFileObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_FILE);
         assert testFileObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_FILE_PROPERTY);
         
+
+        testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
         testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, "file");
 
         try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
@@ -194,13 +206,11 @@ public class AccessStrategyTest {
         assert testFileObject.getAllowableValue().equals(AddressesAccessUtils.ADDRESS_FILE);
         assert testFileObject.getPropertyDescriptors().contains(AddressesAccessUtils.ADDRESS_FILE_PROPERTY);
         
-        testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, "file");
+        
+        testRunner.setProperty(AddressesAccessUtils.PLC_ADDRESS_ACCESS_STRATEGY, AddressesAccessUtils.ADDRESS_FILE);
+        testRunner.setProperty(AddressesAccessUtils.ADDRESS_FILE_PROPERTY, Plc4xNifiTest.getDumyAddressesFile().getAbsolutePath());
 
-        try (MockedStatic<FilePropertyAccessStrategy> staticMock = Mockito.mockStatic(FilePropertyAccessStrategy.class)) {
-            staticMock.when(() -> FilePropertyAccessStrategy.extractAddressesFromFile("file"))
-                .thenReturn(Map.of("EL in use", "${attribute}"));
 
-            testRunner.assertValid();
-        }
+        testRunner.assertValid();
     }
 }
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/record/SchemaCacheTest.java
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
similarity index 98%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
index 431fe79..e7eec21 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.nifi.json.JsonParserFactory;
 import org.apache.nifi.json.JsonTreeRowRecordReader;
 import org.apache.nifi.serialization.MalformedRecordException;
 import org.apache.nifi.serialization.SimpleRecordSchema;
@@ -158,7 +159,7 @@ public class Plc4xCommonTest {
         flowfiles.forEach(t -> {
 
             try (InputStream stream = new ByteArrayInputStream(t.getContent().getBytes(StandardCharsets.UTF_8))) {
-                try (JsonTreeRowRecordReader reader = new JsonTreeRowRecordReader(stream, logger, schema, null, null, null)) {
+                try (JsonTreeRowRecordReader reader = new JsonTreeRowRecordReader(stream, logger, schema, null, null, null, null, null, null, null, new JsonParserFactory())) {
                     Record record = reader.nextRecord();
     
                     while (record!=null) {
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml b/plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/resources/logback-test.xml
similarity index 100%
rename from plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/resources/logback-test.xml
rename to plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-processors/src/test/resources/logback-test.xml
diff --git a/plc4j/integrations/apache-nifi/pom.xml b/plc4j/integrations/apache-nifi/nifi-2/pom.xml
similarity index 52%
copy from plc4j/integrations/apache-nifi/pom.xml
copy to plc4j/integrations/apache-nifi/nifi-2/pom.xml
index 6cf2597..3c81a8c 100644
--- a/plc4j/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-2/pom.xml
@@ -23,60 +23,69 @@
 
     <parent>
         <groupId>org.apache.plc4x</groupId>
-        <artifactId>plc4j-integrations</artifactId>
+        <artifactId>plc4j-apache-nifi</artifactId>
         <version>0.13.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>plc4j-apache-nifi</artifactId>
+    <artifactId>plc4j-apache-nifi-2</artifactId>
     <packaging>pom</packaging>
 
-    <name>PLC4J: Integrations: Apache Nifi</name>
-    <description>Integration module for integrating PLC4X into Apache Nifi.</description>
+    <name>PLC4J: Integrations: Apache Nifi 2</name>
+    <description>Integration module for integrating PLC4X into Apache Nifi 2.</description>
+
 
     <properties>
         <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
-        <nifi.version>1.28.1</nifi.version>
-        <avro.version>1.12.0</avro.version>
+        
+        <java.version>21</java.version>
+        <maven.compiler.release>21</maven.compiler.release>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+        <nifi.version>2.4.0</nifi.version>
+        <nifi.nar-plugin.version>2.1.0</nifi.nar-plugin.version>
     </properties>
 
     <modules>
-        <module>nifi-plc4x-processors</module>
-        <module>nifi-plc4x-nar</module>
+        <module>nifi-2-plc4x-processors</module>
+        <module>nifi-2-plc4x-nar</module>
     </modules>
 
+
     <build>
-        <plugins>
-            <!-- Add the ability to create nar packages -->
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-                <version>1.5.1</version>
-                <extensions>true</extensions>
-            </plugin>
-            <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>buildnumber-maven-plugin</artifactId>
-                <inherited>true</inherited>
-                <executions>
-                    <execution>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>create</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <doCheck>false</doCheck>
-                    <doUpdate>false</doUpdate>
-                    <shortRevisionLength>7</shortRevisionLength>
-                    <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
-                    <revisionOnScmFailure/>
-                    <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
-                    <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
-                </configuration>
-            </plugin>
-        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!-- Add the ability to create nar packages -->
+                <plugin>
+                    <groupId>org.apache.nifi</groupId>
+                    <artifactId>nifi-nar-maven-plugin</artifactId>
+                    <version>${nifi.nar-plugin.version}</version>
+                    <extensions>true</extensions>
+                </plugin>
+                <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>buildnumber-maven-plugin</artifactId>
+                    <inherited>true</inherited>
+                    <executions>
+                        <execution>
+                            <phase>validate</phase>
+                            <goals>
+                                <goal>create</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <doCheck>false</doCheck>
+                        <doUpdate>false</doUpdate>
+                        <shortRevisionLength>7</shortRevisionLength>
+                        <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
+                        <revisionOnScmFailure />
+                        <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
+                        <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
     </build>
 
     <dependencyManagement>
@@ -84,15 +93,10 @@
             <dependency>
                 <groupId>org.junit</groupId>
                 <artifactId>junit-bom</artifactId>
-                <version>5.12.2</version>
+                <version>5.12.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
-            <dependency>
-                <groupId>org.apache.avro</groupId>
-                <artifactId>avro</artifactId>
-                <version>${avro.version}</version>
-            </dependency>
             <dependency>
                 <groupId>org.apache.nifi</groupId>
                 <artifactId>nifi</artifactId>
@@ -105,11 +109,6 @@
                 <artifactId>nifi-utils</artifactId>
                 <version>${nifi.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-avro-record-utils</artifactId>
-                <version>${nifi.version}</version>
-            </dependency>
             <dependency>
                 <groupId>org.apache.nifi</groupId>
                 <artifactId>nifi-json-utils</artifactId>
@@ -122,37 +121,31 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-standard-nar</artifactId>
+                <artifactId>nifi-record</artifactId>
                 <version>${nifi.version}</version>
-                <type>nar</type>
             </dependency>
             <dependency>
                 <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-bundles</artifactId>
+                <artifactId>nifi-record-serialization-service-api</artifactId>
                 <version>${nifi.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
             </dependency>
             <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-annotations</artifactId>
-                <version>1.6.16</version>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-schema-registry-service-api</artifactId>
+                <version>${nifi.version}</version>
+                <scope>test</scope>
             </dependency>
             <dependency>
-                <groupId>org.glassfish.jaxb</groupId>
-                <artifactId>jaxb-runtime</artifactId>
-                <version>4.0.5</version>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-mock</artifactId>
+                <version>${nifi.version}</version>
+                <scope>test</scope>
             </dependency>
             <dependency>
-                <groupId>jakarta.xml.bind</groupId>
-                <artifactId>jakarta.xml.bind-api</artifactId>
-                <version>4.0.2</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>jakarta.activation</groupId>
-                        <artifactId>jakarta.activation-api</artifactId>
-                    </exclusion>
-                </exclusions>
+                <groupId>org.apache.nifi</groupId>
+                <artifactId>nifi-mock-record-utils</artifactId>
+                <version>${nifi.version}</version>
+                <scope>test</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>
diff --git a/plc4j/integrations/apache-nifi/pom.xml b/plc4j/integrations/apache-nifi/pom.xml
index 6cf2597..71949ef 100644
--- a/plc4j/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/pom.xml
@@ -33,128 +33,25 @@
     <name>PLC4J: Integrations: Apache Nifi</name>
     <description>Integration module for integrating PLC4X into Apache Nifi.</description>
 
+
     <properties>
         <project.build.outputTimestamp>2024-02-16T14:53:02Z</project.build.outputTimestamp>
-        <nifi.version>1.28.1</nifi.version>
-        <avro.version>1.12.0</avro.version>
     </properties>
 
     <modules>
-        <module>nifi-plc4x-processors</module>
-        <module>nifi-plc4x-nar</module>
+        <module>nifi-1</module>
     </modules>
 
-    <build>
-        <plugins>
-            <!-- Add the ability to create nar packages -->
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-                <version>1.5.1</version>
-                <extensions>true</extensions>
-            </plugin>
-            <!-- Makes buildRevision and buildBranch available to the NAR Plugin, so they can be populated in the MANIFEST -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>buildnumber-maven-plugin</artifactId>
-                <inherited>true</inherited>
-                <executions>
-                    <execution>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>create</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <doCheck>false</doCheck>
-                    <doUpdate>false</doUpdate>
-                    <shortRevisionLength>7</shortRevisionLength>
-                    <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
-                    <revisionOnScmFailure/>
-                    <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
-                    <scmBranchPropertyName>buildBranch</scmBranchPropertyName>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.junit</groupId>
-                <artifactId>junit-bom</artifactId>
-                <version>5.12.2</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.avro</groupId>
-                <artifactId>avro</artifactId>
-                <version>${avro.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi</artifactId>
-                <version>${nifi.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-utils</artifactId>
-                <version>${nifi.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-avro-record-utils</artifactId>
-                <version>${nifi.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-json-utils</artifactId>
-                <version>${nifi.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-record-serialization-services</artifactId>
-                <version>${nifi.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-standard-nar</artifactId>
-                <version>${nifi.version}</version>
-                <type>nar</type>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-bundles</artifactId>
-                <version>${nifi.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-annotations</artifactId>
-                <version>1.6.16</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.jaxb</groupId>
-                <artifactId>jaxb-runtime</artifactId>
-                <version>4.0.5</version>
-            </dependency>
-            <dependency>
-                <groupId>jakarta.xml.bind</groupId>
-                <artifactId>jakarta.xml.bind-api</artifactId>
-                <version>4.0.2</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>jakarta.activation</groupId>
-                        <artifactId>jakarta.activation-api</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-</project>
\ No newline at end of file
+    <profiles>
+        <profile>
+            <id>.above-or-equal-java-21</id>
+            <activation>
+                <jdk>[21,)</jdk>
+            </activation>
+            <modules>
+                <module>nifi-2</module>
+            </modules>
+        </profile>
+    </profiles>
+
+</project>